<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of proyects_controller
 *
 * @author 250-1-405
 */
class ProyectsController extends AppController {

    var $name = "Proyects";
    var $components = array('RequestHandler');
    var $paginate = array(
        'limit' => 1000,
        'order' => array(
            'Proyect.id' => 'asc'
        )
    );

    function index() {
        $dep = $this->Auth->user('branch_id');

        if ($this->Auth->user('group_id') == 1) {
            $this->Proyect->recursive = 0;
            $this->set('proyects', $this->paginate('Proyect', array('Proyect.proyect_type_id <>' => 0)));
            $this->set('predios', $this->Proyect->Property->find('count'));
            $this->set('cabeza', $this->Proyect->Candidate->find('count', array('conditions' => array('Candidate.candidate_id =' => 0))));
        } else {

            $this->Proyect->recursive = 0;
            $this->set('proyects', $this->paginate('Proyect', array('Proyect.branch_id' => $dep)));
            $this->set('predios', $this->Proyect->Property->find('count', array('conditions' => array('Proyect.branch_id' => $dep))));
            $this->set('cabeza', $this->Proyect->Candidate->find('count', array('conditions' => array('Proyect.branch_id' => $dep, 'Candidate.candidate_id' => 0))));
        }
    }

    function add() {
        if (empty($this->data)) {

            //$this->set('departaments', $this->Proyect->City->Departament->find('list',array('order' => 'name ASC')));
            $this->layout = "ajax";
            $this->set('proyectTypes', $this->Proyect->ProyectType->find('list', array('order' => 'name ASC')));
            $this->set('departaments', $this->Proyect->City->Departament->find('list', array('order' => 'name ASC')));
        } else {
            $regional = $this->Auth->user('branch_id');
            $max = $this->Proyect->find('first', array('order' => 'code_index DESC', 'conditions' => array('Proyect.branch_id' => $regional)));

            if (count($max) == 0) {
                $cont = 0;
            }else
                $cont = $max['Proyect']['code_index'];

            $dep = $this->Proyect->Branch->find('first', array('conditions' => array('Branch.id' => $regional)));
            $dep_cod = $dep['Branch']['codigo'];
            //$tipos = $this->Proyect->ProyectType->findByid($this->data['Proyect']['proyect_type_id']);
            $tipos = $this->Proyect->ProyectType->find("first", array("conditions" => array("ProyectType.id" => $this->data['Proyect']['proyect_type_id'])));

            $tipo = $tipos['ProyectType']['code'];
            $cont++;
            $codigo = $tipo . "1" . "-" . $dep_cod . "-" . $this->ceros($cont);
            $this->data['Proyect']['codigo'] = $codigo;
            $this->data['Proyect']['code_index'] = $cont;
            $this->data['Proyect']['branch_id'] = $regional;
            $this->data['Proyect']['fecha_recepcion'] = "2011-04-19";


            if ($this->Proyect->save($this->data)) {
                $this->Session->setFlash("El proyecto quedó registrado con el codigo $codigo");
                $this->redirect(array('controller' => "Proyects", 'action' => 'index'));
            } else {

                $this->set('proyectTypes', $this->Proyect->ProyectType->find('list', array('order' => 'name ASC')));
                $this->set('departaments', $this->Proyect->City->Departament->find('list', array('order' => 'name ASC')));
                $this->set('cities', $this->Proyect->City->find('list', array('conditions' => array('City.departament_id' => $this->data['Proyect']['departament_id']), 'order' => 'name ASC')));
                echo "<script>alert('Error en datos del formulario')</script>";
            }
        }
    }

    function select_proyect($dato = null) {
        $this->pageTitle = 'Convocatorias 2011';
        $this->disableCache();
        $this->layout = "pdf";


        $datos = $this->params['form'];
        if (!is_null($dato)) {
            $dato = strtoupper($dato);
            $datos['proyecto'] = $dato;
        }
        $datos['proyecto'] = strtoupper($datos['proyecto']);
        $this->Proyect->recursive = -1;
        if (isset($datos['proyecto']) || isset($dato))
            if ($proyecto = $this->Proyect->find('first', array('conditions' => array('Proyect.codigo' => $datos['proyecto'], 'Proyect.call_id' => $this->data['Proyect']['call_id']), 'fields' => array('Proyect.branch_id', 'Proyect.id','Proyect.call_id', 'Proyect.estado', 'Proyect.resultado_fase1')))) {

                if ($this->Auth->user('branch_id') == $proyecto['Proyect']['branch_id']) {

                    $this->Session->write('cod', $datos['proyecto']);
                    $this->Session->write('proy_id', $proyecto['Proyect']['id']);
                    $this->Session->write('call_id', $proyecto['Proyect']['call_id']);
                    $this->Session->write('estado', $proyecto['Proyect']['estado']);
                    $this->Session->write('fase1', $proyecto['Proyect']['resultado_fase1']);
                    $this->set("respuesta", "El Proyecto Ha sido seleccionado " . $this->Session->read('cod'));
                    $this->set("proyecto", $this->Session->read('cod'));
                } else {
                    if ($this->Auth->user('group_id') == 2 || $this->Auth->user('group_id') == 3) {
                        $this->Session->write('cod', "");
                        $this->Session->write('proy_id', "");
                        $this->Session->write('call_id', "");
                        $this->Session->write('estado', 0);
                        $this->set("respuesta", "EL PROYECTO NO PERTENECE A SU REGIONAL" . $this->Session->read('cod'));
                    } else {
                        $cont = 0;
                        if ($this->Auth->user('group_id') == 4 || $this->Auth->user('group_id') == 5 || $this->Auth->user('group_id') == 15 || $this->Auth->user('group_id') == 18) {

                            $this->Proyect->UserProyect->recursive = -1;
                            $cont = $this->Proyect->UserProyect->find('count', array('conditions' => array('UserProyect.user_id' => $this->Auth->user('id'), 'UserProyect.proyect_id' => $proyecto['Proyect']['id'])));
                            if ($cont == 0) {
                                $this->Session->write('cod', "");
                                $this->Session->write('proy_id', "");
                                $this->Session->write('call_id', "");
                                $this->Session->write('estado', 0);
                                $this->set("respuesta", "NO TIENE ASIGNADO EL PROYECTO" . $this->Session->read('cod'));
                            } else {
                                $this->Session->write('cod', $datos['proyecto']);
                                $this->Session->write('fase1', $proyecto['Proyect']['resultado_fase1']);
                                $this->Session->write('proy_id', $proyecto['Proyect']['id']);
                                $this->Session->write('estado', $proyecto['Proyect']['estado']);
                                $this->Session->write('call_id', $proyecto['Proyect']['call_id']);
                                $this->set("respuesta", "El Proyecto Ha sido seleccionado " . $this->Session->read('cod'));
                                $this->set("proyecto", $this->Session->read('cod'));
                            }
                        } else {
                            $this->Session->write('cod', $datos['proyecto']);
                            $this->Session->write('fase1', $proyecto['Proyect']['resultado_fase1']);
                            $this->Session->write('proy_id', $proyecto['Proyect']['id']);
                            $this->Session->write('estado', $proyecto['Proyect']['estado']);
                            $this->Session->write('call_id', $proyecto['Proyect']['call_id']);
                            $this->set("respuesta", "El Proyecto Ha sido seleccionado " . $this->Session->read('cod'));
                            $this->set("proyecto", $this->Session->read('cod'));
                        }
                    }
                }
            } else {
                $this->Session->write('cod', "");
                $this->Session->write('proy_id', "");
                $this->set("respuesta", "No existe el proyecto" . $this->Session->read('cod'));
            }
    }

    function ceros($cod) {
        if ($cod >= 10 && $cod < 100) {
            return "0" . $cod;
        } else if ($cod < 10) {
            return "00" . $cod;
        } else if ($cod >= 100) {
            return $cod;
        }
    }

    function pdf_cierre($tipo) {
        $this->layout = "pdf";
        if ($this->Auth->user('group_id') != 1) {
            $conditions = array('Proyect.branch_id' => $this->Auth->user('branch_id'), 'ProyectType.id' => $tipo);
        } else {
            $conditions = array();
        }
        $this->set('proyectos', $this->Proyect->find('all', array('conditions' => $conditions)));
        $this->set('region', $this->Proyect->Branch->field('nombre', array('Branch.id' => $this->Auth->user('branch_id'))));
        $this->set('tipo', $tipo);
    }

    function select() {
        if (isset($this->data['Proyect']['departament_id'])) {
            $id = $this->data['Proyect']['departament_id'];
            $name = "Proyect.city_id";
        } else {
            $id = $this->data['Proyect']['predio_departamento'];
            $name = "Proyect.predio_municipio";
        }

        $this->set('name', $name);
        $this->set('cities', $this->Proyect->City->find('list', array(
                    'order' => 'name ASC',
                    'conditions' => array('City.departament_id' => $id)
                        )
                ));
    }

    function edit($id = null) {
        if (is_null($id)) {
            $id = $this->Session->read('proy_id');
        }
        $this->Proyect->Branch->recursive = -1;
        $this->set('branches', $this->Proyect->Branch->find('list', array('fields' => array('Branch.id', 'Branch.nombre'))));
        $this->set('grupo', $this->Auth->user('group_id'));
        if (empty($this->data)) {
            $this->Proyect->recursive = -1;

            $this->data = $this->Proyect->find('first', array('conditions' => array('Proyect.id' => $id)));
            $this->set('proyectTypes', $this->Proyect->ProyectType->find('list', array('order' => 'name ASC')));
            $this->set('departaments', $this->Proyect->City->Departament->find('list', array('order' => 'name ASC')));
            $this->set('cities', $this->Proyect->City->find('list', array('order' => 'name ASC', 'conditions' => array('City.departament_id' => $this->data['Proyect']['departament_id']))));
        } else {
            if ($this->Proyect->save($this->data)) {

                $this->Session->setFlash('Proyecto editado con exito');
                $this->redirect(array('controller' => 'Pages', 'action' => 'display'));
            } else {
                $this->Session->setFlash('Error Guardando datos');
                $this->set('proyectTypes', $this->Proyect->ProyectType->find('list', array('order' => 'name ASC')));
                $this->set('departaments', $this->Proyect->City->Departament->find('list', array('order' => 'name ASC')));
                $this->set('cities', $this->Proyect->City->find('list', array('order' => 'name ASC', 'conditions' => array('City.departament_id' => $this->data['Proyect']['departament_id']))));
            }
        }
    }

    function proyect_state() {
        $this->layout = "ajax";
        $id = $this->Session->read('proy_id');
        if ($id == "") {
            $this->Session->setFlash('No ha seleccionado Proyecto');
            $this->redirect(array('controller' => 'pages', 'action' => 'display'));
        } else {
            App::Import('model', 'Candidate');
            App::Import('model', 'Requirement');
            App::Import('model', 'Property');
            App::Import('model', 'TitleStudy');
            $candidate = new Candidate();
            $req = new Requirement();
            $prop = new Property();
            $titulos = new TitleStudy();

            $prop->recursive = -1;
            $this->set('req_proyecto', $this->Proyect->ProyectRequirement->find('all', array('conditions' => array('ProyectRequirement.proyect_id' => $id))));
            $this->set('aspirantes', $candidate->CandidateRequirement->find('all', array('conditions' => array('Candidate.proyect_id' => $id))));
            $candidate->recursive = -1;
            $this->set('aspirantes_totales', $candidate->find('all', array('conditions' => array('Candidate.proyect_id' => $id), 'fields' => array('Candidate.id', 'Candidate.1er_nombre', 'Candidate.2do_nombre', 'Candidate.1er_apellido', 'Candidate.2do_apellido'))));
            $this->set('predios', $prop->PropertyRequirement->find('all', array('conditions' => array('Property.proyect_id' => $id))));
            $this->set('predios_totales', $prop->find('all', array('conditions' => array('Property.proyect_id' => $id), 'fields' => array('Property.id', 'Property.codigo'))));
            $this->set('titulos', $titulos->find('all', array('conditions' => array('Property.proyect_id' => $id), 'fields' => array('Property.codigo', 'Property.nombre', 'Property.id', 'TitleStudy.calificacion', 'TitleStudy.concepto'))));
        }
    }

    function subsanaciones($claim_id = null) {
        $this->layout = "pdf";
        $id = $this->Session->read('proy_id');
        App::Import('model', 'Candidate');
        App::Import('model', 'ProyectRequirement');
        App::Import('model', 'Property');
        App::Import('model', 'TitleStudy');
        if (is_null($claim_id)) {
            $claim_id = 0;
        }
        $this->set('claim_id', $claim_id);
        $candidate = new Candidate();
        $req = new ProyectRequirement();
        $prop = new Property();
        $titulos = new TitleStudy();
        $this->set('cod', $id);
        $codigo = $this->Session->read('cod');
        $this->set('codigo', $codigo);
        $tipo = $this->Proyect->field('proyect_type_id', array('Proyect.id' => $id));

        if ($req->find('count', array('conditions' => array('ProyectRequirement.proyect_id' => $id, "ProyectRequirement.claim_id" => $claim_id, "ProyectRequirement.calificacion" => array(0, 2)))) > 0) {
            $this->Session->setFlash('FALTAN ASPECTOS POR EVALUAR O ESTE PROYECTO SE ENCUENTRA RECHAZADO POR EL FILTRO DE PROYECTOS ');
            $this->redirect(array('controller' => 'Proyects', 'action' => 'index'));
        } elseif ($prop->PropertyRequirement->find('count', array('conditions' => array('Property.proyect_id' => $id, "PropertyRequirement.claim_id" => $claim_id, "PropertyRequirement.calificacion" => array(0, 2)))) > 0) {
            $this->Session->setFlash('FALTAN ASPECTOS POR EVALUAR O ESTE PROYECTO SE ENCUENTRA RECHAZADO POR EL FILTRO DE PREDIOS');
            $this->redirect(array('controller' => 'Proyects', 'action' => 'index'));
        } elseif ($prop->find('count', array('conditions' => array('Property.proyect_id' => $id, 'City.ley_segunda' => 1))) > 0) {
            $this->Session->setFlash('HAY UN PREDIO RECHAZADO POR LEY SEGUNDA', "flash_custom");
            $this->redirect(array('controller' => 'Pages', 'action' => 'display'));
        }

        $this->set('proyectos', $req->find('all', array('conditions' => array('ProyectRequirement.Proyect_id' => $id, 'ProyectRequirement.claim_id' => $claim_id))));
        $this->set('id', $id);
    }

    function qualify_phaseI() {
        $this->layout = "ajax";
        $id = $this->Session->read('proy_id');
        if ($id == "") {
            $this->Session->setFlash('No ha seleccionado Proyecto');
            $this->redirect(array('controller' => 'Proyects', 'action' => 'index'));
        } else {

            $this->Proyect->recursive = -1;
            $proyectos = $this->Proyect->find('all', array('conditions' => array('or' => array('Proyect.estado !=' => 1, 'Proyect.estado_filtro !=' => 1, 'Proyect.filtro_predios !=' => 1, 'Proyect.filtro_familias !=' => 1)), 'fields' => array('Proyect.id')));
//                        foreach ($proyectos as $proyect) {
//                               $id=$proyect['Proyect']['id'];

            $proyects = $this->Proyect->query("SELECT  Proyect.id,ProyectRequirement.id,ProyectRequirement.calificacion,ProyectRequirement.cal_subsanacion FROM proyects Proyect LEFT JOIN  proyect_requirements ProyectRequirement  ON Proyect.id =ProyectRequirement.proyect_id  WHERE Proyect.id =$id order by ProyectRequirement.calificacion ASC");
            $cal_p = 1;
            echo "<table border=1>";
            foreach ($proyects as $pro) {
                if (isset($pro['ProyectRequirement']['calificacion']))
                    $pc = $pro['ProyectRequirement']['calificacion'];
                else
                    $pc = 0;

                if ($pc == 2) {
                    $cal_p = 2;
                    echo"<tr><td>RECHAZADO POR FILTRO DE PROYECTO</td></tr>";

                    break;
                } elseif ($pc == 3) {
                    if ($pro['ProyectRequirement']['cal_subsanacion'] == 2 || $pro['ProyectRequirement']['cal_subsanacion'] == 3) {
                        $cal_p = 2;
                        echo"<tr><td>EL PROYECTO SE RECHAZÓ EN UNA SUBSANACION</td></tr>";
                        break;
                    } elseif ($pro['ProyectRequirement']['cal_subsanacion'] == 0) {
                        echo"<tr><td>FALTA INGRESAR REGISTRO DE SUBSANACION DE PROYECTO</td></tr>";
                        $cal_p = 3;
                        break;
                    }
                } elseif ($pc == 0) {
                    echo"<tr><td>FALTAN ASPECTOS POR CALIFICAR EN FILTRO PROYECTO</td></tr>";
                    $cal_p = 0;
                    break;
                }
            }

            if ($cal_p == 1) {
                echo"<tr><td>EL PROYECTO CUMPLE CON FILTRO PROYECTO</td></tr>";
            }
            $this->Proyect->query("UPDATE proyects set estado_filtro=$cal_p WHERE id=$id");
            //$cal_p."dasdasdas<br>";
            //fin de calificacion filtro proyecto
            //calificacion de filtro predios y de estudio de titulos     
            App::Import('model', 'Property');
            $predio = new Property();
            if ($predio->find('count', array('conditions' => array('Property.proyect_id' => $id, 'City.ley_segunda' => 1))) > 0) {
                $this->Proyect->query("UPDATE properties set estado_filtro=2 WHERE proyect_id=$id");
                echo "<tr><td>HAY UN PREDIO RECHAZADO POR LEY SEGUNDA</td></tr>";
            } else {

                $predio->recursive = -1;
                $predios = $predio->find('all', array('conditions' => array('Property.proyect_id' => $id), 'fields' => array('Property.id', 'Property.codigo')));
                foreach ($predios as $pr) {
                    //$predio->PropertyRequirement->recursive=-1;
                    //$prp_req=$predio->PropertyRequirement->find('all',array('conditions'=>array('PropertyRequirement.property_id'=>$pr['Property']['id']),'order'=>array('Property.id', 'PropertyRequirement.calificacion DESC'),'fields'=>array('PropertyRequirement.id','PropertyRequirement.calificacion','PropertyRequirement.cal_subsanacion') ));

                    $idp = $pr['Property']['id'];
                    $codP = $pr['Property']['codigo'];
                    $prp_req = $this->Proyect->query("SELECT Property.id,Property.city_id,PropertyRequirement.id,PropertyRequirement.calificacion,PropertyRequirement.cal_subsanacion FROM properties Property LEFT JOIN property_requirements PropertyRequirement  ON Property.id =PropertyRequirement.property_id  WHERE Property.id =$idp order by PropertyRequirement.calificacion ASC");
                    $calpre = 1;
                    foreach ($prp_req as $pr_r) {

                        if (!isset($pr_r['PropertyRequirement']['calificacion'])) {
                            $calpre = 0;
                            echo"<tr><td>NO SE HA EVALUADO EL FILTRO DEL  PREDIO $codP TOTALMENTE</td></tr>";
                            break;
                        } elseif ($pr_r['PropertyRequirement']['calificacion'] == 2) {
                            $calpre = 2;
                            echo"<tr><td>EL PREDIO $codP SE RECHAZÓ EN EL FILTRO DE PREDIOS.</td></tr>";
                            break;
                        } elseif ($pr_r['PropertyRequirement']['calificacion'] == 3) {

                            if ($pr_r['PropertyRequirement']['cal_subsanacion'] == 2 || $pr_r['PropertyRequirement']['cal_subsanacion'] == 3) {
                                $calpre = 2;
                                echo"<tr><td>SE RECHAZÓ EL PREDIO  $codP EN  SUBSANACIÓN</td></tr>";

                                break;
                            } elseif ($pr_r['PropertyRequirement']['cal_subsanacion'] == 0) {
                                $calpre = 3;
                                echo"<tr><td>NO SE HA DILIGENCIADO LA SUBSANACIÓN DEL PREDIO  $codP </td></tr>";
                                break;
                            }
                        } elseif ($pr_r['PropertyRequirement']['calificacion'] == 0) {
                            $calpre = 0;
                            echo"<tr><td>NO SE HA EVALUADO EL FILTRO DEL  PREDIO $codP TOTALMENTE</td></tr>";
                            break;
                        }
                    }
                    if ($calpre == 1) {
                        echo"<tr><td>EL PREDIO $codP CUMPLE CON FILTRO DE REQUISITOS  </td></tr>";
                    }

                    $this->Proyect->query("UPDATE properties set estado_filtro=$calpre WHERE id=$idp");

                    // echo $calpre."   $idp <br>";
                    $estudios = $this->Proyect->query("SELECT Property.id, TitleStudy.calificacion FROM properties AS Property LEFT JOIN title_studies AS TitleStudy  ON (TitleStudy.property_id = Property.id) WHERE Property.id =$idp  ORDER BY TitleStudy.id DESC LIMIT 1");

                    foreach ($estudios as $value) {

                        if (isset($value['TitleStudy']['calificacion'])) {
                            $cal = $value['TitleStudy']['calificacion'];
                        } else {
                            $cal = 0;
                        }


                        if ($cal == 0) {
                            echo"<tr><td>EL PREDIO $codP NO TIENE CALIFICACION DE ESTUDIO DE TITULOS  </td></tr>";
                            $this->Proyect->query("UPDATE properties set estado_filtro=$cal WHERE id=$idp");
                        } elseif ($cal == 1) {
                            echo"<tr><td>EL PREDIO $codP CUMPLE CON  ESTUDIO DE TITULOS  </td></tr>";
                            if ($calpre == 1) {
                                $this->Proyect->query("UPDATE properties set estado_filtro=$cal WHERE id=$idp");
                            }
                        } elseif ($cal == 3 AND $calpre != 2) {
                            echo"<tr><td>EL PREDIO $codP TIENE PENDIENTE SUBSANACIÓN DE ESTUDIO DE TÍTULOS </td></tr>";
                            $this->Proyect->query("UPDATE properties set estado_filtro=$cal WHERE id=$idp");
                        } elseif ($cal == 2) {
                            echo"<tr><td>EL PREDIO $codP SE RECHAZA POR ESTUDIO DE TÍTULOS </td></tr>";
                            $this->Proyect->query("UPDATE properties set estado_filtro=$cal WHERE id=$idp");
                        }
                    }
                } ///fin de calificacion de predios
            }


            ///calificacion de aspirantes

            $this->Proyect->Candidate->recursive = -1;
            $aspirantes = $this->Proyect->Candidate->find('all', array('conditions' => array('Candidate.proyect_id' => $id, 'Candidate.candidate_id' => 0), 'fields' => array('Candidate.1er_nombre', 'Candidate.1er_apellido', 'Candidate.proyect_id', 'Candidate.id', 'Candidate.nro_ident', 'Candidate.candidate_id'), 'order' => array('Candidate.id ASC')));
            $cupos = $this->Proyect->Candidate->find('count', array('conditions' => array('Candidate.proyect_id' => $id, 'Candidate.clase' => '1')));


            foreach ($aspirantes as $aspirante) {

                $idc = $aspirante['Candidate']['id'];

                $nom = $aspirante['Candidate']['1er_nombre'] . " " . $aspirante['Candidate']['1er_apellido'] . " Documento:" . $aspirante['Candidate']['nro_ident'];
                $requisitos = $this->Proyect->query("SELECT  Candidate.id,CandidateRequirement.calificacion,CandidateRequirement.cal_subsanacion FROM  candidates AS Candidate  LEFT JOIN candidate_requirements AS CandidateRequirement ON Candidate.id=CandidateRequirement.candidate_id   WHERE CandidateRequirement.candidate_id =$idc AND claim_id=0 ORDER BY CandidateRequirement.calificacion ASC ");
                $ced = $aspirante['Candidate']['nro_ident'];
                //REVISANDO DUPLICIDAD  EN ASPIRANTES

                $calcan = 1;


                foreach ($requisitos as $requisito) {
                    if (!isset($requisito['CandidateRequirement']['calificacion'])) {
                        $calcan = 0;
                    }

                    switch ($requisito['CandidateRequirement']['calificacion']) {
                        case '0':
                            echo"<tr><td>EL Aspirante  $nom NO TIENE REGISTRO EN   FILTRO FAMILIAS </td></tr>";
                            $calcan = 0;
                            break;
                        case '1':
                            break;


                        case '2':
                            echo"<tr><td>EL Aspirante  $nom SE RECHAZA POR  FILTRO FAMILIAS </td></tr>";
                            $calcan = 2;

                            break;
                        case '3':
                            switch ($requisito['CandidateRequirement']['cal_subsanacion']) {
                                case '0':

                                    echo"<tr><td>El ASPIRANTE   $nom TIENE UNA SUBSANACION PENDIENTE </td></tr>";
                                    $calcan = 3;
                                    break;
                                case '2':

                                    echo"<tr><td>El ASPIRANTE   $nom SE RECHAZÓ EN UNA SUBSANACION </td></tr>";
                                    $calcan = 2;
                                    break;
                                case '3':

                                    echo"<tr><td>El ASPIRANTE   $nom SE RECHAZÓ EN UNA SUBSANACION </td></tr>";
                                    $calcan = 2;
                                    break;

                                default:
                                    break;
                            }

                            break;

                        default:
                            echo"<tr><td>EL Aspirante  $nom NO TIENE REGISTRO EN   FILTRO FAMILIAS " . $requisito['CandidateRequirement']['calificacion'] . "</td></tr>";
                            $calcan = 0;
                            break;
                    }
                }

                if ($calcan == 1) {
                    echo"<tr><td>EL Aspirante  $nom CUMPLE CON  FILTRO FAMILIAS " . $requisito['CandidateRequirement']['calificacion'] . "</td></tr>";
                } else {
                    echo"<tr><td>EL Aspirante  $nom NO CUMPLE CON  FILTRO FAMILIAS " . $requisito['CandidateRequirement']['calificacion'] . "</td></tr>";
                }
                $this->Proyect->query("UPDATE candidates set estado_filtro=$calcan WHERE id=$idc");
                $this->Proyect->query("UPDATE candidates set estado_filtro=$calcan WHERE candidate_id=$idc");


                $conyuge = $this->Proyect->Candidate->find('first', array('conditions' => array('Candidate.candidate_id' => $idc), 'fields' => array('Candidate.1er_nombre', 'Candidate.1er_apellido', 'Candidate.proyect_id', 'Candidate.id', 'Candidate.nro_ident', 'Candidate.candidate_id')));
                if (!empty($conyuge)) {

                    $nombreConyuge = $conyuge['Candidate']['1er_nombre'] . " " . $conyuge['Candidate']['1er_apellido'] . " Documento:" . $conyuge['Candidate']['nro_ident'];
                    $requisitosConyuge = $this->Proyect->query("SELECT Candidate.id, CandidateRequirement.calificacion,CandidateRequirement.cal_subsanacion FROM  candidates AS Candidate  LEFT JOIN candidate_requirements AS CandidateRequirement ON Candidate.id=CandidateRequirement.candidate_id   WHERE CandidateRequirement.candidate_id = " . $conyuge['Candidate']['id'] . " AND claim_id=0 ORDER BY CandidateRequirement.calificacion ASC ");
                    $calConyuge = 1;
                    foreach ($requisitosConyuge as $requisitoConyuge) {
                        if (!isset($requisitoConyuge['CandidateRequirement']['calificacion'])) {
                            $calConyuge = 0;
                        }

                        switch ($requisitoConyuge['CandidateRequirement']['calificacion']) {
                            case '0':
                                echo"<tr><td>EL conyuge  $nombreConyuge NO TIENE REGISTRO EN   FILTRO FAMILIAS </td></tr>";
                                $calConyuge = 0;
                                break;
                            case '1':
                                break;


                            case '2':
                                echo"<tr><td>EL conyuge  $nombreConyuge SE RECHAZA POR  FILTRO FAMILIAS </td></tr>";
                                $calConyuge = 2;

                                break;
                            case '3':
                                switch ($requisitoConyuge['CandidateRequirement']['cal_subsanacion']) {
                                    case '0':

                                        echo"<tr><td>El CONYUGE   $nombreConyuge TIENE UNA SUBSANACION PENDIENTE </td></tr>";
                                        $calConyuge = 3;
                                        break;
                                    case '2':

                                        echo"<tr><td>El CONYUGE   $nombreConyuge SE RECHAZÓ EN UNA SUBSANACION </td></tr>";
                                        $calConyuge = 2;
                                        break;
                                    case '3':

                                        echo"<tr><td>El CONYUGE   $nombreConyuge SE RECHAZÓ EN UNA SUBSANACION </td></tr>";
                                        $calConyuge = 2;
                                        break;

                                    default:
                                        break;
                                }

                                break;

                            default:
                                echo"<tr><td>EL CONYUGE  $nombreConyuge NO TIENE REGISTRO EN   FILTRO FAMILIAS " . "</td></tr>";
                                $calConyuge = 0;
                                break;
                        }
                    }

                    if ($calConyuge == 1) {
                        echo"<tr><td>EL CONYUGE  $nombreConyuge CUMPLE CON  FILTRO FAMILIAS </td></tr>";
                        $this->Proyect->query("UPDATE candidates set estado_filtro=$calConyuge WHERE id=" . $conyuge['Candidate']['id']);
                    } else {
                        //Se rechaza el conyuge  y se marca el cabeza con el numero 9 para saber que se rechaza por culpa del conyuge
                        $this->Proyect->query("UPDATE candidates set estado_filtro=$calConyuge WHERE id=" . $conyuge['Candidate']['id']);
                        $this->Proyect->query("UPDATE candidates set estado_filtro=9 WHERE id=" . $idc);
                    }
                }
            }
            ///SE CALIFICAN LAS RECLAMACIONES
            App::Import('model', 'Claim');
            $Claim = new Claim();
            if ($reclamacion = $Claim->find('first', array('recursive' => -1, 'conditions' => array('Claim.proyect_id' => $id), 'order' => array('Claim.id DESC'), 'fields' => array('Claim.calificacion', 'Claim.id')))) {
                if ($reclamacion ['Claim']['calificacion'] != 'Evaluar nuevamente') {
                    //Se buscan los aspirantes que estan con calificación diferente a cumple (1,9.En el caso del 9 cumple el aspirante pero nó el conyuge) Se ordenan por id por que primero se revisa el  cabeza de familia y luego el conyuge
                    $aspirantes = $this->Proyect->Candidate->find('all', array('conditions' => array('Candidate.proyect_id' => $id, 'Candidate.estado_filtro !=' => 9, 'Candidate.estado_filtro !=' => 1), 'fields' => array('Candidate.1er_nombre', 'Candidate.1er_apellido', 'Candidate.proyect_id', 'Candidate.id', 'Candidate.nro_ident', 'Candidate.candidate_id'), 'order' => array('Candidate.id ASC')));
                    foreach ($aspirantes as $aspirante) {
                        $nom = $aspirante['Candidate']['1er_nombre'] . " " . $aspirante['Candidate']['1er_apellido'] . " Documento:" . $aspirante['Candidate']['nro_ident'];
                        $calificacion = 0;
                        // Se buscan ls reclamaciónes que tengan estos aspirantes 
                        $cumpleReclamacion = 1;
                        if ($reclamacionesAspirante = $Claim->CandidateRequirementClaim->find('all', array('conditions' => array('CandidateRequirement.candidate_id' => $aspirante['Candidate']['id']), 'fields' => Array('CandidateRequirementClaim.calificacion')))) {
                            foreach ($reclamacionesAspirante as $reclamacionAspirante) {
                                if ($reclamacionAspirante['CandidateRequirementClaim']['calificacion'] != 'Desvirtúa la causal') {
                                    $cumpleReclamacion = 0;
                                }
                            }
                            if ($cumpleReclamacion == 0) {
                                //Aspirante rechazado en reclamación
                                //Si tiene cabeza de familia sociado se califica como no cumple por causa del conyuge
                                if ($aspirante['Candidate']['candidate_id'] > 0) {
                                    $this->Proyect->query("UPDATE candidates set estado_filtro=4 WHERE id=" . $aspirante['Candidate']['id']);
                                    $this->Proyect->query("UPDATE candidates set estado_filtro=4 WHERE id=" . $aspirante['Candidate']['candidate_id']);
                                    echo"<tr><td>El CONYUGE   $nom SE RECHAZA EN  RECLAMACIÓN TAMBIÉN SE DESCARTA CABEZA DE FAMILIA ASOCIADO. </td></tr>";
                                } else {
                                    $this->Proyect->query("UPDATE candidates set estado_filtro=4 WHERE id=" . $aspirante['Candidate']['id']);
                                    echo"<tr><td>El ASPIRANTE   $nom SE RECHAZÓ EN UNA RECLAMACIÓN </td></tr>";
                                }
                            } else {
                                $this->Proyect->query("UPDATE candidates set estado_filtro=5 WHERE id=" . $aspirante['Candidate']['id']);
                                echo"<tr><td>El ASPIRANTE   $nom CUMPLE POR  RECLAMACIÓN </td></tr>";
                            }
                        }
                    }
                } else {
                    // ASPIRANTES QUE HAY QUE EVALUAR NUEVAMENTE
                    //Se buscan los aspirantes que estan con calificación diferente a cumple (1,9.En el caso del 9 cumple el aspirante pero nó el conyuge) Se ordenan por id por que primero se revisa el  cabeza de familia y luego el conyuge
                    $aspirantes = $this->Proyect->Candidate->find('all', array('conditions' => array('Candidate.proyect_id' => $id, 'Candidate.estado_filtro !=' => 9, 'Candidate.estado_filtro !=' => 1), 'fields' => array('Candidate.1er_nombre', 'Candidate.1er_apellido', 'Candidate.proyect_id', 'Candidate.id', 'Candidate.nro_ident', 'Candidate.candidate_id'), 'order' => array('Candidate.id ASC')));
                    foreach ($aspirantes as $aspirante) {
                        $nom = $aspirante['Candidate']['1er_nombre'] . " " . $aspirante['Candidate']['1er_apellido'] . " Documento:" . $aspirante['Candidate']['nro_ident'];
                        $cumple = 1;
                        $sql = "SELECT  CandidateRequirement.calificacion,CandidateRequirement.cal_subsanacion FROM   candidate_requirements AS CandidateRequirement  WHERE CandidateRequirement.candidate_id = " . $aspirante['Candidate']['id'] . " AND claim_id=" . $reclamacion ['Claim']['id'] . " ORDER BY CandidateRequirement.calificacion ASC";
                        if ($requisitos = $this->Proyect->query("SELECT  CandidateRequirement.calificacion,CandidateRequirement.cal_subsanacion FROM   candidate_requirements AS CandidateRequirement  WHERE CandidateRequirement.candidate_id = " . $aspirante['Candidate']['id'] . " AND claim_id=" . $reclamacion ['Claim']['id'] . " ORDER BY CandidateRequirement.calificacion ASC ")) {
                            foreach ($requisitos as $requisito) {
                                $sql = $requisito['CandidateRequirement']['calificacion'];
                                switch ($requisito['CandidateRequirement']['calificacion']) {
                                    case '0':
                                        echo"<tr><td> (EN) EL ASPIRANTE  $nom NO TIENE REGISTRO EN   FILTRO FAMILIAS </td></tr>";
                                        $cumple = 0;
                                        break;
                                    case '1':
                                        break;


                                    case '2':
                                        echo"<tr><td> (EN) EL ASPIRANTE  $nom SE RECHAZA POR  FILTRO FAMILIAS </td></tr>";
                                        $cumple = 2;

                                        break;
                                    case '3':
                                        switch ($requisito['CandidateRequirement']['cal_subsanacion']) {
                                            case '0':

                                                echo"<tr><td> (EN)El ASPIRANTE  $nom TIENE UNA SUBSANACION PENDIENTE </td></tr>";
                                                $cumple = 3;
                                                break;
                                            case '2':

                                                echo"<tr><td> (EN)El ASPIRANTE  $nom SE RECHAZÓ EN UNA SUBSANACION </td></tr>";
                                                $cumple = 2;
                                                break;
                                            case '3':

                                                echo"<tr><td> (EN)El ASPRANTE  $nom SE RECHAZÓ EN UNA SUBSANACION </td></tr>";
                                                $cumple = 2;
                                                break;

                                            default:
                                                $cumple = 0;
                                                break;
                                        }

                                        break;

                                    default:
                                        echo"<tr><td>(EN) EL ASPIRANTE  $nom NO TIENE REGISTRO EN   FILTRO FAMILIAS " . "</td></tr>";
                                        $cumple = 0;
                                        break;
                                }
                            }
                            if ($cumple != 1) {

                                if ($aspirante['Candidate']['candidate_id'] > 0) {
                                    $this->Proyect->query("UPDATE candidates set estado_filtro=7 WHERE id=" . $aspirante['Candidate']['id']);
                                    $this->Proyect->query("UPDATE candidates set estado_filtro=7 WHERE id=" . $aspirante['Candidate']['candidate_id']);
                                    echo"<tr><td>El CONYUGE   $nom SE RECHAZA EN  EVALUAR NUEVAMENTE TAMBIÉN SE DESCARTA CABEZA DE FAMILIA ASOCIADO. </td></tr>";
                                } else {
                                    $this->Proyect->query("UPDATE candidates set estado_filtro=7 WHERE id=" . $aspirante['Candidate']['id']);
                                    echo"<tr><td>El ASPIRANTE   $nom SE RECHAZÓ EN EVALUAR NUEVAMENTE</td></tr>";
                                }
                            } else {
                                $this->Proyect->query("UPDATE candidates set estado_filtro=6 WHERE id=" . $aspirante['Candidate']['id']);
                                echo"<tr><td>El ASPIRANTE   $nom CUMPLE EN  EVALUAR NUEVAMENTE </td></tr>";
                            }
                        } else {
                            
                        }
                    }
                }
            }




            //CALIFICACION DE DUPLICIDAD
            $aspirantes = $this->Proyect->Candidate->find('all', array('conditions' => array('Candidate.proyect_id' => $id), 'fields' => array('Candidate.1er_nombre', 'Candidate.1er_apellido', 'Candidate.proyect_id', 'Candidate.id', 'Candidate.nro_ident', 'Candidate.candidate_id'), 'order' => array('Candidate.id ASC')));
            foreach ($aspirantes as $aspirante) {
                $nom = $aspirante['Candidate']['1er_nombre'] . " " . $aspirante['Candidate']['1er_apellido'] . " Documento:" . $aspirante['Candidate']['nro_ident'];

                $repetido_aspirantes = $this->Proyect->Candidate->find('count', array('conditions' => array('Candidate.nro_ident' => $aspirante['Candidate']['nro_ident'])));
                $repetido_familias = $this->Proyect->Candidate->Relative->find('count', array('conditions' => array('Relative.nro_ident' => $aspirante['Candidate']['nro_ident'])));
                if ($repetido_aspirantes > 1) {
                    if ($aspirante['Candidate']['candidate_id'] == 0) {
                        echo"<tr><td>EL Aspirante  $nom SE RECHAZA POR ESTAR DUPLICADO  </td></tr>";
                        $this->Proyect->query("UPDATE candidates set estado_filtro=8 WHERE id=" . $aspirante['Candidate']['id']);
                    }
                    if ($aspirante['Candidate']['candidate_id'] > 0) {
                        $this->Proyect->query("UPDATE candidates set estado_filtro=8, duplicado=1 WHERE id=" . $aspirante['Candidate']['id']);
                        $this->Proyect->query("UPDATE candidates set estado_filtro=9 WHERE id=" . $aspirante['Candidate']['candidate_id']);
                        echo"<tr><td>EL Aspirante  $nom ES CONYUGE, SE RECHAZA POR ESTAR DUPLICADO Y TAMBIEN SU NUCLEO FAMILIAR </td></tr>";
                    }
                }
                if ($repetido_familias > 1) {

                    $this->Proyect->query("UPDATE candidates set estado_filtro=8,duplicado=1 WHERE id=$idc");
                    if ($aspirante['Candidate']['candidate_id'] > 0) {
                        $this->Proyect->query("UPDATE candidates set estado_filtro=9 WHERE id=" . $aspirante['Candidate']['candidate_id']);
                        $this->Proyect->query("UPDATE candidates set estado_filtro=8 WHERE id=" . $aspirante['Candidate']['id']);
                        echo"<tr><td>EL Aspirante  $nom ES CONYUGE, SE RECHAZA POR ESTAR DUPLICADO Y TAMBIEN SU NUCLEO FAMILIAR </td></tr>";
                    } else if ($aspirante['Candidate']['candidate_id'] == 0) {
                        $this->Proyect->query("UPDATE candidates set estado_filtro=8 WHERE id=" . $aspirante['Candidate']['id']);
                    }
                    echo"<tr><td>EL Aspirante  $nom SE RECHAZA POR ESTAR REGISTRADO COMO FAMILIAR </td></tr>";
                }
            }



            //calificacion global filtro aspirantes


            $cupos = $this->Proyect->Candidate->find('count', array('conditions' => array('Candidate.proyect_id' => $id, 'Candidate.clase' => 1)));
            $suplentes = $this->Proyect->Candidate->find('count', array('conditions' => array('Candidate.proyect_id' => $id, 'Candidate.clase' => 2)));
            $activos = $this->Proyect->Candidate->find('count', array('conditions' => array('Candidate.proyect_id' => $id, 'Candidate.estado_filtro' => array(1, 5, 6), 'Candidate.candidate_id' => 0)));
            $subsanables = $this->Proyect->Candidate->find('count', array('conditions' => array('Candidate.proyect_id' => $id, 'Candidate.estado_filtro' => 3, 'Candidate.candidate_id' => 0)));
            $sinr = $this->Proyect->Candidate->find('count', array('conditions' => array('Candidate.proyect_id' => $id, 'Candidate.estado_filtro' => 0, 'Candidate.candidate_id' => 0)));

            echo"<tr><td><h1>NÚMERO DE  FAMILIAS TITULARES $cupos </h1></td></tr>";
            echo"<tr><td><h1>NÚMERO DE  FAMILIAS SUPLENTES $suplentes </h1></td></tr>";
            echo"<tr><td><h1>ASPIRANTES HABILITADOS $activos </h1></td></tr>";

            if ($activos >= $cupos && $activos != 0 && $cupos != 0) {
                $this->Proyect->query("UPDATE proyects set filtro_familias=1 WHERE id=$id");
                echo"<tr><td><h1>EL PROYECTO CUMPLE CON FILTRO FAMILIAS</h1></td></tr>";
            } else {
                if (($subsanables + $activos + $sinr) >= $cupos) {
                    $this->Proyect->query("UPDATE proyects set filtro_familias=3 WHERE id=$id");
                    echo"<tr><td><h1>EL PROYECTO ES SUBSANABLE EN  FILTRO FAMILIAS</h1></td></tr>";
                } else {
                    $this->Proyect->query("UPDATE proyects set filtro_familias=2 WHERE id=$id");
                    echo"<tr><td><h1>EL PROYECTO NO CUMPLE CON FILTRO FAMILIAS</h1></td></tr>";
                }
            }


            ///CALIFICACION GLOBAL PREDIOS


            $cupos = $this->Proyect->Property->find('count', array('conditions' => array('Property.proyect_id' => $id)));
            $activos = $this->Proyect->Property->find('count', array('conditions' => array('Property.proyect_id' => $id, 'Property.estado_filtro' => 1)));
            $rechazados = $this->Proyect->Property->find('count', array('conditions' => array('Property.proyect_id' => $id, 'Property.estado_filtro' => 2)));
            $p_subsanables = $this->Proyect->Property->find('count', array('conditions' => array('Property.proyect_id' => $id, 'Property.estado_filtro' => 3)));
            $p_sinreg = $this->Proyect->Property->find('count', array('conditions' => array('Property.proyect_id' => $id, 'Property.estado_filtro' => 0)));


            if ($rechazados > 0) {
                $this->Proyect->query("UPDATE proyects set filtro_predios=2 WHERE id=$id");
                echo"<tr><td><h1>EL PROYECTO NO CUMPLE CON FILTRO PREDIOS</h1></td></tr>";
            } elseif (($activos == $cupos) && $activos != 0) {
                $this->Proyect->query("UPDATE proyects set filtro_predios=1 WHERE id=$id");
                echo"<tr><td><h1>EL PROYECTO CUMPLE CON FILTRO PREDIOS</h1></td></tr>";
            } else {
                $this->Proyect->query("UPDATE proyects set filtro_predios=3 WHERE id=$id");
                echo"<tr><td><h1>EL PROYECTO ESTA PENDIENTE DE CALIFICACION PREDIOS</h1></td></tr>";
            }


            //CALIFICAION PROYECTOS

            $totp = $this->Proyect->field('Proyect.estado_filtro', array('Proyect.id' => $id));
            if ($totp == 1) {
                echo"<tr><td><h1>EL PROYECTO CUMPLE CON FILTRO PROYECTO</h1></td></tr>";
            } elseif ($totp == 2) {
                echo"<tr><td><h1>EL PROYECTO NO CUMPLE CON FILTRO PROYECTO</h1></td></tr>";
            } elseif ($totp == 3) {
                echo"<tr><td><h1>EL PROYECTO ES SUBSANABLE EN FILTRO PROYECTO</h1></td></tr>";
            } elseif ($totp == 0) {
                echo"<tr><td><h1>EL PROYECTO NO TIENE REGISTRO EN FILTRO PROYECTO</h1></td></tr>";
            }



            //}  
            echo "</table>";
        }
    }

    function reports_index() {
        $this->layout = 'ajax';
    }

    function correccion_de_informacion() {
        $this->layout = 'ajax';
    }

    function letter_index() {
        $this->layout = 'ajax';
        $proyect_id = $this->Session->read('proy_id');

        if ($proyect_id == "") {
            $this->Session->setFlash('No ha seleccionado Proyecto');
            $this->redirect(array('controller' => 'Pages', 'action' => 'display'));
        } else {
            App::Import('model', 'Poll');
            App::Import('model', 'FinalEvaluation');
            $poll = new Poll();

            $final_evaluation = new FinalEvaluation();

            $this->set("poll_id", $poll->field('Poll.id', array('Poll.proyect_id' => $proyect_id), "Poll.id DESC"));
            $this->set("final_evaluation_id", $final_evaluation->field('FinalEvaluation.id', array('FinalEvaluation.proyect_id' => $proyect_id), "FinalEvaluation.id DESC"));
            $this->set("proyect_id", $proyect_id);
            $this->set("codigo", $this->Session->read('cod'));
        }
    }

    function proyect_report() {
        $this->layout = "pdf";
        ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
        //create a file
        date_default_timezone_set("America/Bogota");
        $filename = "proyectos_" . date("Y.m.d") . ".csv";
        $csv_file = fopen('php://output', 'w');
        $dep = $this->Auth->user('branch_id');
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename="' . $filename . '"');
        Configure::write('debug', 0);

        if ($this->Auth->user('group_id') != 1) {
            $sql = "SELECT Proyect.id,Proyect.predio_valor,Proyect.estado,Proyect.'codigo',Proyect.'estado_filtro', Proyect.'filtro_predios', Proyect.'filtro_familias',Branch.nombre,City.name,Departament.name FROM 'proyects' Proyect LEFT JOIN branches Branch ON Proyect.branch_id=Branch.id LEFT JOIN cities City ON Proyect.city_id=City.id LEFT JOIN departaments Departament ON Proyect.departament_id=Departament.id WHERE Proyect.branch_id=$dep";
        } else {
            $sql = "SELECT Proyect.id,Proyect.predio_valor,Proyect.estado, Proyect.'codigo',Proyect.'estado_filtro', Proyect.'filtro_predios', Proyect.'filtro_familias',Branch.nombre,City.name,Departament.name FROM 'proyects' Proyect LEFT JOIN branches Branch ON Proyect.branch_id=Branch.id LEFT JOIN cities City ON Proyect.city_id=City.id LEFT JOIN departaments Departament ON Proyect.departament_id=Departament.id";
        }

        $results = $this->Proyect->query($sql);

        // The column headings of your .csv file
        $header_row = array("PROYECTO", "REGIONAL", "DEPARTAMENTO EJECUCION", "MUNICIPIO EJECUCION", "FILTRO PROYECTO", "FILTRO PREDIOS", "FILTRO FAMILIAS", "TOTAL FAMILIAS INSCRITAS", "PRINCIPALES", "SUPLENTES", "HABILITADOS", 'FAMILIAS NEGRITUDES', 'FAMILIAS INDIGENAS', 'FAMILIAS ROM', 'NUMERO DE PREDIOS', 'AREA TOTAL', "VALOR DE PREDIOS", "ESTADO");
        fputcsv($csv_file, $header_row, ';', '"');

        // Each iteration of this while loop will be a row in your .csv file where each field corresponds to the heading of the column
        foreach ($results as $result) {
            // Array indexes correspond to the field names in your db table(s)
            $idp = $result['Proyect']['id'];
            $this->Proyect->Candidate->recursive = -1;
            $total = $this->Proyect->Candidate->find('count', array('conditions' => array('Candidate.proyect_id' => $idp, 'Candidate.candidate_id' => 0)));
            $principales = $this->Proyect->Candidate->find('count', array('conditions' => array('Candidate.candidate_id' => 0, 'Candidate.proyect_id' => $idp, 'Candidate.clase' => 1)));
            $suplentes = $this->Proyect->Candidate->find('count', array('conditions' => array('Candidate.candidate_id' => 0, 'Candidate.proyect_id' => $idp, 'Candidate.clase' => 2)));
            $habilitados = $this->Proyect->Candidate->find('count', array('conditions' => array('Candidate.candidate_id' => 0, 'Candidate.proyect_id' => $idp, 'Candidate.estado_filtro' => 1)));
            $negro = $this->Proyect->Candidate->find('count', array('conditions' => array('Candidate.candidate_id' => 0, 'Candidate.proyect_id' => $idp, 'Candidate.minoria' => 1)));
            $indigena = $this->Proyect->Candidate->find('count', array('conditions' => array('Candidate.candidate_id' => 0, 'Candidate.proyect_id' => $idp, 'Candidate.minoria' => 2)));
            $rom = $this->Proyect->Candidate->find('count', array('conditions' => array('Candidate.candidate_id' => 0, 'Candidate.proyect_id' => $idp, 'Candidate.minoria' => 3)));
            $predios = $this->Proyect->Property->find('count', array('conditions' => array('Property.proyect_id' => $idp)));
            $area = $this->Proyect->Property->find('first', array('conditions' => array('Property.proyect_id' => $idp), 'fields' => array('SUM(Property.area_titulo) as areaT')));
            $regional = $result['Branch']['nombre'];

            $aretot = $area[0]['areaT'];
            $proy = "";
            switch ($result['Proyect']['estado_filtro']) {
                case 0:
                    $proy = "Sin Registro";
                    break;
                case 1:
                    $proy = "Cumple";
                    break;
                case 2:
                    $proy = "No Cumple";
                    break;
                case 3:
                    $proy = "Subsanable";
                    break;

                default:
                    $proy = "Sin Registro";
                    break;
            }
            switch ($result['Proyect']['filtro_predios']) {
                case 0:
                    $proy1 = "Sin Registro";
                    break;
                case 1:
                    $proy1 = "Cumple";
                    break;
                case 2:
                    $proy1 = "No Cumple";
                    break;
                case 3:
                    $proy = "Subsanable";
                    break;


                default:
                    $proy1 = "Sin Registro";
                    break;
            }

            switch ($result['Proyect']['filtro_familias']) {
                case 0:
                    $proy2 = "Sin Registro";
                    break;
                case 1:
                    $proy2 = "Cumple";
                    break;
                case 2:
                    $proy2 = "No Cumple";
                    break;
                case 3:
                    $proy2 = "Subsanable";
                    break;

                default:
                    $proy2 = "Sin Registro";
                    break;
            }


            $row = array(
                $result['Proyect']['codigo'],
                $regional,
                $result['Departament']['name'],
                $result['City']['name'],
                $proy,
                $proy1,
                $proy2,
                $total,
                $principales,
                $suplentes,
                $habilitados,
                $negro,
                $indigena,
                $rom,
                $predios,
                $aretot,
                $result['Proyect']['predio_valor'],
                $result['Proyect']['estado']
            );

            fputcsv($csv_file, $row, ';', '"');
        }

        fclose($csv_file);
    }

    function result_letter() {
        $this->layout = "pdf";
        $id = $this->Session->read('proy_id');
        $codigo = $this->Session->read('cod');
        if ($id == "") {
            $this->Session->setFlash('No ha seleccionado Proyecto');
            $this->redirect(array('controller' => 'Pages', 'action' => 'display'));
        } else {
            $this->Proyect->Proposer->recursive = 0;
            $this->Proyect->recursive = 0;
            $this->Proyect->Candidate->recursive = -1;
            $this->set('pid', $id);
            $this->Proyect->Candidate->CandidateRequirement->recursive = 2;
            $this->set('proponente', $this->Proyect->Proposer->find('all', array('conditions' => array('Proposer.proyect_id' => $id), 'fields' => array('Proposer.nombre', 'Proposer.direccion', 'City.name'))));
            $proyecto = $this->Proyect->find('first', array('conditions' => array('Proyect.id' => $id), 'fields' => array('Branch.nombre', 'Branch.director', 'Branch.director', 'Proyect.resultado_fase1')));
            $this->set('proyecto', $proyecto);
            $this->set('codigo', $codigo);
        }
    }

    function result_letter_recalification($claim_id) {
        $this->layout = "pdf";
        $id = $this->Session->read('proy_id');
        $codigo = $this->Session->read('cod');
        if ($id == "") {
            $this->Session->setFlash('No ha seleccionado Proyecto');
            $this->redirect(array('controller' => 'Proyects', 'action' => 'index'));
        } else {
            $this->Proyect->Proposer->recursive = -1;
            $this->Proyect->recursive = 0;
            $this->Proyect->Candidate->recursive = -1;
            $this->set('pid', $id);
            $this->Proyect->Candidate->CandidateRequirement->recursive = 2;
            $options['joins'] = array(
                array(
                    'table' => 'cities',
                    'alias' => 'City',
                    'type' => 'Left',
                    'conditions' => array(
                        'Proposer.city_id = City.id'
                )),
                array(
                    'table' => 'departaments',
                    'alias' => 'Departament',
                    'type' => 'Left',
                    'conditions' => array(
                        'City.departament_id = Departament.id'
                )),
                array(
                    'table' => 'claims',
                    'alias' => 'Claim',
                    'type' => 'Left',
                    'conditions' => array(
                        'Proposer.proyect_id = Claim.proyect_id '
                ))
            );
            //devuelvo los datos encontrados en la reclamación solo envio la primera reclamación encontrada que tenga por
            //calificación "Evaluar nuevamente"
            $options['conditions'] = array('Proposer.proyect_id' => $id, 'Claim.calificacion' => 'Evaluar nuevamente');
            $options['fields'] = array('Proposer.nombre', 'Proposer.direccion', 'City.name', 'Departament.name', 'Proposer.telefono_fijo', 'Proposer.telefono_celular', 'Claim.fecha_sesion', 'Claim.acta', 'Claim.calificacion_territorial', 'Claim.concepto_territorial', 'Claim.reviso_territorial', 'Claim.preparo_territorial');





            $this->set('proponente', $this->Proyect->Proposer->find('all', $options));
            $proyecto = $this->Proyect->find('first', array('conditions' => array('Proyect.id' => $id), 'fields' => array('Branch.nombre', 'Branch.director', 'Branch.director', 'Proyect.resultado_fase1')));
            $this->set('proyecto', $proyecto);
            $this->set('codigo', $codigo);
            $this->set('claim_id', $claim_id);
        }
    }

    function checksesion() {
        $this->layout = 'ajax';
        if (is_null($this->Auth->user('id'))) {

            $this->Session->setFlash('Su sessión a expirado');
            $this->redirect(array('controller' => 'Users', 'action' => 'login'));
        } else {
            $this->set("respuesta", "EL PROYECTO HA SIDO SELECCIONADO " . $this->Session->read('cod'));
        }
    }

    function reclamaciones_sider() {
        $this->layout = "csv";
        ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
        //create a file
        $filename = "Reporte_sider_comite_reclamaciones" . date("Y.m.d") . ".csv";
        $csv_file = fopen('php://output', 'w');
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename="' . $filename . '"');
        Configure::write('debug', 0);
        $header_row = array("Convocatoria", "Proyecto", "Etapa presentación", "Acta presentación", "Fecha presentación",
            "Decisión comité presentación", "Acta presentación seguimiento", "Decisión comité seguimiento", "Observaciones", "Resultado final comité");
        fputcsv($csv_file, $header_row, ';', '"');

        //Hacemos la consulta
        $sql = "SELECT proyect.codigo, act.numero, act.fecha_reunion, claim.decision, claim.calificacion
        FROM claims claim
        LEFT JOIN proyects proyect ON ( proyect.id = claim.proyect_id ) 
        LEFT JOIN acts act ON ( act.numero = claim.acta ) 
        WHERE 1 ";

        $results = $this->Proyect->query($sql);

        // Each iteration of this while loop will be a row in your .csv file where each field corresponds to the heading of the column
        foreach ($results as $result) {
            // Array indexes correspond to the field names in your db table(s)
            $row = array(
                "SIT-01-2011",
                $result['proyect']['codigo'],
                "FASE I",
                $result['act']['numero'],
                $result['act']['fecha_reunion'],
                $result['claim']['calificacion'],
                "",
                "",
                $result['claim']['decision'],
                $result['claim']['calificacion'],
            );

            fputcsv($csv_file, $row, ';', '"');
        }

        fclose($csv_file);
    }

    function presentados_sider() {
        //Una realización de Omar Amaya. 2012.

        App::Import('model', 'Property');
        App::Import('model', 'City');
        App::Import('model', 'Departament');

        //Inicializamos variables
        $numero_integrantes = 0;
        $numero_conyuges = 0;
        $numero_parientes = 0;
        $numero_familias = 0;

        $this->layout = "csv";
        ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
        //create a file
        $filename = "Reporte_sider_presentados" . date("Y.m.d") . ".csv";
        $csv_file = fopen('php://output', 'w');
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename="' . $filename . '"');
//        Configure::write('debug', 2);
        $header_row = array("Convocatoria", "Proyecto", "Dirección Territorial", "Tipo de Convocatoria", "Departamento (Ejecución)",
            "Municipio (Ejecución)", "Predios (Cant.)", "Extensión (Has.)", "Valor Predios ($)", "Familias (Cant.)",
            "Integrantes (Cant.)", "Tipo doc. Proponente", "No. Documento Proponente", "1er apellido Proponente", "2o apellido Proponente",
            "Nombre(s) Proponente", "Dirección Proponente", "Departamento dirección radicación Proponente", "Municipio Proponente", "Teléfono(s) Proponente",
            "Celular Proponente", "Fax Proponente", "Email Proponente", "Tipo prop. Proponente", "Identificación representante legal",
            "Nombre representante legal", "Fecha Presentación"
        );
        fputcsv($csv_file, $header_row, ';', '"');
        //Hacemos la consulta
        $sql = "SELECT proyecto.`codigo`, territorial.nombre, proyecto.id, Departament.name, City.name, CityProposer.name, DepartamentProposer.name 
                FROM `proyects` proyecto 
                left join `branches` territorial
                ON (proyecto.branch_id=territorial.id)
                left join `cities` City
                ON (proyecto.city_id=City.id)
                left join `departaments` Departament
                ON (City.departament_id=Departament.id)
                left join `proposers` Proposer
                ON (Proposer.proyect_id=proyecto.id)
                left join `cities` CityProposer
                ON (CityProposer.id=Proposer.city_id)
                left join `departaments` DepartamentProposer
                ON (DepartamentProposer.id=CityProposer.departament_id)
                WHERE proyecto.call_id=1";
        $results = $this->Proyect->query($sql);

        $tipo_proyecto = "";
        // Each iteration of this while loop will be a row in your .csv file where each field corresponds to the heading of the column
        //$predio = new Property();
        foreach ($results as $result) {
            // Array indexes correspond to the field names in your db table(s)
            //tipoconvocatoria
            $tipo_proyecto = substr($result['proyecto']['codigo'], 0, 1);
            $tipo_convocataria = "";
            switch ($tipo_proyecto) {
                case 'M':
                    $tipo_convocataria = "Mujeres Desplazadas";
                    break;
                case 'C':
                    $tipo_convocataria = "Campesinos";
                    break;
                case 'D':
                    $tipo_convocataria = "Desplazados";
                    break;

                default:
                    $tipo_convocataria = "";
                    break;
            }
            //cantidadpredios
            $numero_predios = $this->Proyect->Property->find('count', array('recursive' => -1, 'conditions' => array('Property.proyect_id' => $result['proyecto']['id'])));
            //EXTENSION PREDIOS
            $suma_area = $this->Proyect->Property->find('first', array('recursive' => -1, 'conditions' => array('Property.proyect_id' => $result['proyecto']['id']), 'fields' => array('Property.suma_areas')));
            //VALOR PREDIOS
            $suma_valor = $this->Proyect->Property->find('first', array('recursive' => -1, 'conditions' => array('Property.proyect_id' => $result['proyecto']['id']), 'fields' => array('Property.suma_valores')));
            //NUMERO FAMILIAS POR PROYECTO
            $numero_familias = $this->Proyect->Candidate->find('count', array('recursive' => -1, 'conditions' => array('Candidate.proyect_id' => $result['proyecto']['id'], 'Candidate.candidate_id' => '0')));
            //CANTIDAD DE INTEGRANTES
            $numero_conyuges = $this->Proyect->Candidate->find('count', array('recursive' => -1, 'conditions' => array('Candidate.proyect_id' => $result['proyecto']['id'], 'Candidate.candidate_id !=' => '0')));
            $numero_parientes = $this->Proyect->Candidate->Relative->find('count', array('conditions' => array('Candidate.proyect_id' => $result['proyecto']['id'],)));
            $numero_integrantes = $numero_conyuges + $numero_parientes + $numero_familias;


            //Info del PROPONENTE
            //Tipo Documento de Proponente
            $tipo_proponente = $this->Proyect->Proposer->find('first', array('recursive' => -1, 'conditions' => array('Proposer.proyect_id' => $result['proyecto']['id']), 'fields' => array('Proposer.proposer_type')));
            $tipo_documento_proponente = "";
            switch ($tipo_proponente['Proposer']['proposer_type']) {
                case '0':
                    $tipo_documento_proponente = "Sin Registro";
                    break;
                case '1':
                    $tipo_documento_proponente = "C.C";
                    break;
                case '2':
                    $tipo_documento_proponente = "NIT";
                    break;
                default:
                    $tipo_documento_proponente = "No registra proponente";
                    break;
            }
            //documento proponente
            $documento_proponente = $this->Proyect->Proposer->find('first', array('conditions' => array('Proposer.proyect_id' => $result['proyecto']['id']), 'fields' => array('Proposer.numero_identificacion')));
            //Nombre proponente
            $nombre_proponente = $this->Proyect->Proposer->find('first', array('conditions' => array('Proposer.proyect_id' => $result['proyecto']['id']), 'fields' => array('Proposer.nombre')));
            //Direccion proponente
            $direccion_proponente = $this->Proyect->Proposer->find('first', array('conditions' => array('Proposer.proyect_id' => $result['proyecto']['id']), 'fields' => array('Proposer.direccion')));

            //Telefono proponente
            $telefono_proponente = $this->Proyect->Proposer->find('first', array('conditions' => array('Proposer.proyect_id' => $result['proyecto']['id']), 'fields' => array('Proposer.telefono_fijo')));
            //Celular proponente
            $celular_proponente = $this->Proyect->Proposer->find('first', array('conditions' => array('Proposer.proyect_id' => $result['proyecto']['id']), 'fields' => array('Proposer.telefono_celular')));
            //Fax proponente
            $fax_proponente = $this->Proyect->Proposer->find('first', array('conditions' => array('Proposer.proyect_id' => $result['proyecto']['id']), 'fields' => array('Proposer.fax')));
            //Correo proponente
            $correo_proponente = $this->Proyect->Proposer->find('first', array('conditions' => array('Proposer.proyect_id' => $result['proyecto']['id']), 'fields' => array('Proposer.email')));
            //INFO DE REPRESENTANTE            
            //documento representante
            $documento_representante = $this->Proyect->Proposer->find('first', array('conditions' => array('Proposer.proyect_id' => $result['proyecto']['id']), 'fields' => array('Proposer.rep_cedula')));
            //Apellido representante
            $apellido_representante = $this->Proyect->Proposer->find('first', array('conditions' => array('Proposer.proyect_id' => $result['proyecto']['id']), 'fields' => array('Proposer.rep_apellidos')));
            //Nombre representante
            $nombre_representante = $this->Proyect->Proposer->find('first', array('conditions' => array('Proposer.proyect_id' => $result['proyecto']['id']), 'fields' => array('Proposer.rep_nombres')));

            $row = array(
                "SIT-2011-01",
                $result['proyecto']['codigo'],
                $result['territorial']['nombre'],
                $tipo_convocataria,
                $result['Departament']['name'],
                $result['City']['name'],
                $numero_predios,
                $suma_area['Property']['suma_areas'],
                $suma_valor['Property']['suma_valores'],
                $numero_familias,
                $numero_integrantes,
                $tipo_documento_proponente,
                $documento_proponente['Proposer']['numero_identificacion'],
                "",
                "",
                $nombre_proponente['Proposer']['nombre'],
                $direccion_proponente['Proposer']['direccion'],
                $result['DepartamentProposer']['name'],
                $result['CityProposer']['name'],
                $telefono_proponente['Proposer']['telefono_fijo'],
                $celular_proponente['Proposer']['telefono_celular'],
                $fax_proponente['Proposer']['fax'],
                $correo_proponente['Proposer']['email'],
                $tipo_convocataria,
                $documento_representante['Proposer']['rep_cedula'],
                $nombre_representante['Proposer']['rep_nombres'] . " " . $apellido_representante['Proposer']['rep_apellidos'],
                "31/05/2011",
            );

            fputcsv($csv_file, $row, ';', '"');
        }

        fclose($csv_file);
    }

    function fase2_sider() {

        App::Import('model', 'Candidate');
        App::Import('model', 'Property');
        App::Import('model', 'EvaluationAppraisal');
        App::Import('model', 'FinalEvaluation');
        App::Import('model', 'Call');
        App::Import('model', 'TopographicMap');
        App::Import('model', 'EvaluationAppraisal');
        App::Import('model', 'InitialEvaluation');
        App::Import('model', 'FinalEvaluationAnswer');
        App::Import('model', 'FinalProductiveLine');

        $this->layout = "csv";
        ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
        //create a file
        $filename = "Reporte_sider_comite_reclamaciones" . date("Y.m.d") . ".csv";
        $csv_file = fopen('php://output', 'w');
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename="' . $filename . '"');
        Configure::write('debug', 0);
        $header_row = array("Convocatoria", "Proyecto", "Familias (Cant.)", "Mujeres desplazadas cabeza de familia",
            "Extensión (Has)", "Predios (Cant.)", "Valor predios ($)", "Subsido predio ($)", "Subsidio proyecto productivo ($)",
            "Valor subsidio notarial", "Subsidio total", "Presento proyecto", "Evaluable", "Suelos", "Avalúo",
            "Eval pptivo", "Concepto integral", "Puntos ranking", "Observaciones", "Fecha fase 2");
        fputcsv($csv_file, $header_row, ';', '"');

        //Hacemos la consulta
        $sql = "SELECT proyect.codigo, proyect.id FROM proyects proyect WHERE proyect.call_id = 1";

        $results = $this->Proyect->query($sql);

        $candidates = new Candidate();
        $candidates->recursive = -1;

        $properties = new Property();
        $properties->recursive = -1;

        $avaluo_comercial = new EvaluationAppraisal();
        $avaluo_comercial->recursive = -1;

        $final_evaluation = new FinalEvaluation();
        $final_evaluation->recursive = -1;

        $call = new Call();
        $call->recursive = -1;

        $planoTopografico = new TopographicMap();
        $planoTopografico->recursive = -1;

        $avaluo = new EvaluationAppraisal();
        $avaluo->recursive = -1;

        $proyecto_productivo = new InitialEvaluation();
        $proyecto_productivo->recursive = -1;

        $final_evaluation_answer = new FinalEvaluationAnswer();
        $final_evaluation_answer->recursive = -1;

        $final_productive_line = new FinalProductiveLine();
        $final_productive_line->recursive = 1;

        //Obtengo el valor del salario minimo para la convocatoria.
        $valor_salario_min = $call->field('Call.valor_smmv', array('Call.id' => 1));

        // se itera sobre los proyectos que pasaron a fase II
        foreach ($results as $result) {
            //Busco la cantidad de familias que tiene un proyecto.
            $cantidad_familias = $candidates->find('count', array('conditions' => array('Candidate.candidate_id' => '0', 'Candidate.proyect_id' => $result['proyect']['id'])));
            $mujeres_desplazadas_cabeza = $candidates->find('count', array('conditions' => array('Candidate.genero' => '2', 'Candidate.candidate_id' => '0', 'Candidate.tipo' => '4', 'Candidate.proyect_id' => $result['proyect']['id'])));

            $cantidad_predios = 0;
            $predios = $properties->find('all', array('conditions' => array('Property.proyect_id' => $result['proyect']['id']), 'fields' => array('Property.area_titulo', 'Property.id')));
            $cantidad_predios = $properties->find('count', array('conditions' => array('Property.proyect_id' => $result['proyect']['id'])));

            $extesion_predios = 0;
            $valor_predios = 0;

            $calificacion_suelos1 = "";
            $calificacion_suelos = "CUMPLE";

            $calificacion_avaluos1 = "";
            $calificacion_avaluos = "CUMPLE";

            // busco la calificación del ultimo proyecto productivo
            $calificacion_proyecto_productivo = "";
            $calificacion_proyecto_productivo = $proyecto_productivo->field('InitialEvaluation.calificacion_integral', array('InitialEvaluation.proyect_id' => $result['proyect']['id']), 'InitialEvaluation.id DESC');

            if ($calificacion_proyecto_productivo == "") {
                $calificacion_proyecto_productivo = "NO CUMPLE";
            }

            foreach ($predios as $predio) {
                $extesion_predios += $predio['Property']['area_titulo'];
                $valor_predios += $avaluo_comercial->field('valor', array('EvaluationAppraisal.property_id' => $predio['Property']['id']), 'EvaluationAppraisal.id DESC');

                // busco la calificación del ultimo plano topográfico del predio
                $calificacion_suelos1 = $planoTopografico->field('TopographicMap.calificacion', array('TopographicMap.property_id' => $predio['Property']['id']), 'TopographicMap.id DESC');

                // busco la calificación del ultimo avalúo del predio
                $calificacion_avaluos1 = $avaluo->field('EvaluationAppraisal.calificacion', array('EvaluationAppraisal.property_id' => $predio['Property']['id']), 'EvaluationAppraisal.id DESC');

                if ($calificacion_suelos1 == "" or $calificacion_suelos1 != '1') {
                    $calificacion_suelos = "NO CUMPLE";
                }

                if ($calificacion_avaluos1 == "" or $calificacion_avaluos1 != '1') {
                    $calificacion_avaluos = "NO CUMPLE";
                }
            }

            $evaluacion_final = $final_evaluation->find('first', array('conditions' => array('FinalEvaluation.proyect_id' => $result['proyect']['id']), 'fields' => array('FinalEvaluation.id', 'FinalEvaluation.subsidio_predios_real', 'FinalEvaluation.subsidio_proyecto_real', 'FinalEvaluation.familias_habilitadas', 'FinalEvaluation.calificacion_elegibilidad_integral', 'FinalEvaluation.concepto_elegibilidad_integral')));
            $gasto_notarial = $evaluacion_final['FinalEvaluation']['familias_habilitadas'] * $valor_salario_min;

            $calificacion_evaluacion_final = $evaluacion_final['FinalEvaluation']['calificacion_elegibilidad_integral'];
            if ($calificacion_evaluacion_final == "") {
                $calificacion_evaluacion_final = "NO CUMPLE";
            }

            // busco los puntajes de las preguntas para calcular el puntaje total obtenido en la evaluación final.
            $puntajes = $final_evaluation_answer->find('all', array('conditions' => array('FinalEvaluationAnswer.final_evaluation_id' => $evaluacion_final['FinalEvaluation']['id']), 'fields' => array('FinalEvaluationAnswer.puntaje_agricola', 'FinalEvaluationAnswer.puntaje_pecuario')));
            $puntaje_agricola = 0;
            $puntaje_pecuario = 0;
            foreach ($puntajes as $puntaje) {
                $puntaje_agricola += $puntaje['FinalEvaluationAnswer']['puntaje_agricola'];
                $puntaje_pecuario += $puntaje['FinalEvaluationAnswer']['puntaje_pecuario'];
            }

            $area_agricola = $final_productive_line->find('first', array('conditions' => array('ProductiveActivity.tipo' => 'Agricola', 'FinalProductiveLine.final_evaluation_id' => $evaluacion_final['FinalEvaluation']['id']), 'fields' => array('sum(FinalProductiveLine.area)AS suma_agricola ')));
            $area_pecuaria = $final_productive_line->find('first', array('conditions' => array('ProductiveActivity.tipo' => 'Pecuaria', 'FinalProductiveLine.final_evaluation_id' => $evaluacion_final['FinalEvaluation']['id']), 'fields' => array('sum(FinalProductiveLine.area)AS suma_pecuaria ')));
            $tipo_linea = "";
            $puntaje_total = 0;
            if ($area_agricola[0]['suma_agricola'] >= $area_pecuaria[0]['suma_pecuaria']) {
                $puntaje_total = $puntaje_agricola;
            } else {
                $puntaje_total = $puntaje_pecuario;
            }

            $row = array(
                "SIT-01-2011",
                $result['proyect']['codigo'],
                $cantidad_familias,
                $mujeres_desplazadas_cabeza,
                number_format($extesion_predios, 4, ',', '.'),
                $cantidad_predios,
                number_format($valor_predios, 2, ',', '.'),
                number_format($evaluacion_final['FinalEvaluation']['subsidio_predios_real'], 2, ',', '.'),
                number_format($evaluacion_final['FinalEvaluation']['subsidio_proyecto_real'], 2, ',', '.'),
                number_format($gasto_notarial, 2, ',', '.'),
                number_format($evaluacion_final['FinalEvaluation']['subsidio_proyecto_real'] + $evaluacion_final['FinalEvaluation']['subsidio_predios_real'], 2, ',', '.'),
                "sin registro",
                "sin registro",
                $calificacion_suelos,
                $calificacion_avaluos,
                $calificacion_proyecto_productivo,
                $calificacion_evaluacion_final,
                $puntaje_total,
                $evaluacion_final['FinalEvaluation']['concepto_elegibilidad_integral'],
                '0000-00-00'
            );

            fputcsv($csv_file, $row, ';', '"');
        }

        fclose($csv_file);
    }

    function reemplazar_codigos() {
        $codigos = array('codigo' => 'D1-ANT-URB-028-001', 'id' => '5146',
            'codigo' => 'MD1-CAU-013-001', 'id' => '2455',
            'codigo' => 'D1-CAU-038-001', 'id' => '1766',
            'codigo' => 'D1-CAU-073-001', 'id' => '1157',
            'codigo' => 'C1-CAU-096-001', 'id' => '3312',
            'codigo' => 'C1-CAU-101-001', 'id' => '3406',
            'codigo' => 'D1-CAU-103-001', 'id' => '1732',
            'codigo' => 'C1-CUN-091-001', 'id' => '7227',
            'codigo' => 'D1-CUN-722-001', 'id' => '4061',
            'codigo' => 'D1-GUN-002-001', 'id' => '5428',
            'codigo' => 'D1-HUI-411-001', 'id' => '11049',
            'codigo' => 'MD1-HUI-426-001', 'id' => '9872',
            'codigo' => 'D1-NAR-PAS-048-001', 'id' => '1100',
            'codigo' => 'D1-NAR-PAS-193-001', 'id' => '4640',
            'codigo' => 'D1-NAR-PAS-382-001', 'id' => '3350',
            'codigo' => 'D1-NAR-PAS-527-001', 'id' => '1422',
            'codigo' => 'D1-NAR-PAS-625-001', 'id' => '908',
            'codigo' => 'D1-NAR-PAS-646-001', 'id' => '1945',
            'codigo' => 'D1-NAR-PAS-699-001', 'id' => '5479',
            'codigo' => 'D1-NAR-PAS-744-001', 'id' => '1111',
            'codigo' => 'D1-PUT-101-001', 'id' => '4959',
            'codigo' => 'D1-PUT-183-001', 'id' => '3668',
            'codigo' => 'D1-SAN-452-001', 'id' => '4498',
            'codigo' => 'D1-SAN-681-001', 'id' => '10685',
            'codigo' => 'D1-SUC-053-001', 'id' => '11760',
            'codigo' => 'D1-TOL-285-001', 'id' => '10432',
            'codigo' => 'D1-VIC-086-001', 'id' => '9204',
            'codigo' => 'C1-ANT-MED-086-001', 'id' => '10031',
            'codigo' => 'MD1-ARA-058-001', 'id' => '8435',
            'codigo' => 'MD1-ARA-059-001', 'id' => '8439',
            'codigo' => 'MD1-ARA-076-001', 'id' => '8897',
            'codigo' => 'MD1-ARA-087-001', 'id' => '8915',
            'codigo' => 'MD1-BOL-056-001', 'id' => '5910',
            'codigo' => 'MD1-BOL-057-001', 'id' => '6163',
            'codigo' => 'D1-CAL-045-001', 'id' => '318',
            'codigo' => 'D1-CAL-143-001', 'id' => '272',
            'codigo' => 'MD1-CAL-392-001', 'id' => '2879',
            'codigo' => 'MD1-CAQ-018-001', 'id' => '4218',
            'codigo' => 'MD1-CAQ-018-002', 'id' => '8092',
            'codigo' => 'MD1-CAQ-335-001', 'id' => '7552',
            'codigo' => 'C1-CAS-007-001', 'id' => '1456',
            'codigo' => 'MD1-CAU-006-001', 'id' => '3545',
            'codigo' => 'C1-CAU-110-001', 'id' => '2102',
            'codigo' => 'MD1-CAU-149-002', 'id' => '1418',
            'codigo' => 'MD1-CES-171-001', 'id' => '1216',
            'codigo' => 'MD1-CHO-002-001', 'id' => '2016',
            'codigo' => 'MD1-CHO-003-001', 'id' => '2512',
            'codigo' => 'MD1-CHO-007-001', 'id' => '2751',
            'codigo' => 'C1-COR-024-001', 'id' => '523',
            'codigo' => 'MD1-COR-034-001', 'id' => '6126',
            'codigo' => 'C1-COR-043-001', 'id' => '5709',
            'codigo' => 'C1-CUN-115-001', 'id' => '10691',
            'codigo' => 'D1-CUN-529-001', 'id' => '11329',
            'codigo' => 'MD1-CUN-538-001', 'id' => '11376',
            'codigo' => 'MD1-GUV-026-001', 'id' => '1465',
            'codigo' => 'C1-HUI-052-001', 'id' => '8078',
            'codigo' => 'C1-HUI-052-002', 'id' => '8079',
            'codigo' => 'MD1-MAG-193-001', 'id' => '7944',
            'codigo' => 'MD1-MAG-196-001', 'id' => '7962',
            'codigo' => 'MD1-NAR-PAS-011-001', 'id' => '413',
            'codigo' => 'MD1-NAR-PAS-071-001', 'id' => '2206',
            'codigo' => 'MD1-NAR-PAS-104-001', 'id' => '844',
            'codigo' => 'MD1-NAR-PAS-1053-001', 'id' => '2985',
            'codigo' => 'MD1-NAR-PAS-1060-001', 'id' => '469',
            'codigo' => 'MD1-NAR-PAS-1065-001', 'id' => '976',
            'codigo' => 'MD1-NAR-PAS-108-001', 'id' => '914',
            'codigo' => 'MD1-NAR-PAS-1090-001', 'id' => '1009',
            'codigo' => 'C1-NAR-PAS-134-001', 'id' => '1442',
            'codigo' => 'MD1-NAR-PAS-180-001', 'id' => '3553',
            'codigo' => 'D1-NAR-PAS-372-001', 'id' => '6385',
            'codigo' => 'MD1-NAR-PAS-645-001', 'id' => '1907',
            'codigo' => 'MD1-NAR-PAS-720-001', 'id' => '2234',
            'codigo' => 'MD1-NAR-PAS-769-001', 'id' => '1948',
            'codigo' => 'MD1-PUT-050-001', 'id' => '1604',
            'codigo' => 'MD1-PUT-078-001', 'id' => '2444',
            'codigo' => 'C1-PUT-096-001', 'id' => '3010',
            'codigo' => 'MD1-PUT-147-001', 'id' => '2181',
            'codigo' => 'MD1-PUT-147-002', 'id' => '2183',
            'codigo' => 'MD1-PUT-147-003', 'id' => '2185',
            'codigo' => 'MD1-QUI-066-001', 'id' => '2644',
            'codigo' => 'C1-QUI-092-001', 'id' => '2959',
            'codigo' => 'C1-QUI-092-002', 'id' => '2964',
            'codigo' => 'C1-RIS-040-001', 'id' => '5262',
            'codigo' => 'C1-SUC-022-001', 'id' => '7359',
            'codigo' => 'MD1-TOL-032-001', 'id' => '10599',
            'codigo' => 'C1-TOL-290-001', 'id' => '9283',
            'codigo' => 'C1-TOL-321-001', 'id' => '11396',
            'codigo' => 'C1-TOL-329-001', 'id' => '5185',
            'codigo' => 'C1-TOL-591-004', 'id' => '4873',
            'codigo' => 'MD1-VIC-021-001', 'id' => '7261',
            'codigo' => 'C1-VIC-038-001', 'id' => '9190',
            'codigo' => 'D1-ANT-URB-019-001', 'id' => '8573',
            'codigo' => 'D1-ANT-URB-023-001', 'id' => '11816',
            'codigo' => 'D1-ARA-097-001', 'id' => '9050',
            'codigo' => 'D1-ARA-098-001', 'id' => '9058',
            'codigo' => 'D1-CAL-282-001', 'id' => '727',
            'codigo' => 'C1-CAS-020-001', 'id' => '558',
            'codigo' => 'D1-CAU-059-001', 'id' => '1803',
            'codigo' => 'D1-CAU-081-001', 'id' => '14',
            'codigo' => 'D1-CAU-118-001', 'id' => '548',
            'codigo' => 'C1-CAU-139-001', 'id' => '1955',
            'codigo' => 'C1-CHO-016-002', 'id' => '2401',
            'codigo' => 'D1-CHO-028-001', 'id' => '2484',
            'codigo' => 'C1-COR-014-001', 'id' => '9416',
            'codigo' => 'D1-COR-033-001', 'id' => '6088',
            'codigo' => 'D1-CUN-136-001', 'id' => '2984',
            'codigo' => 'D1-CUN-545-001', 'id' => '2818',
            'codigo' => 'D1-CUN-573-001', 'id' => '2314',
            'codigo' => 'D1-CUN-787-001', 'id' => '1781',
            'codigo' => 'MD1-GUA-023-001', 'id' => '3925',
            'codigo' => 'MD1-GUA-098-001', 'id' => '5118',
            'codigo' => 'MD1-GUA-098-002', 'id' => '5121',
            'codigo' => 'D1-HUI-028-001', 'id' => '806',
            'codigo' => 'D1-MAG-028-001', 'id' => '3411',
            'codigo' => 'D1-NAR-PAS-062-001', 'id' => '1652',
            'codigo' => 'D1-NAR-PAS-135-001', 'id' => '1904',
            'codigo' => 'D1-NAR-PAS-146-001', 'id' => '2318',
            'codigo' => 'D1-NAR-PAS-148-001', 'id' => '2366',
            'codigo' => 'D1-NAR-PAS-148-002', 'id' => '2367',
            'codigo' => 'D1-NAR-PAS-438-001', 'id' => '4403',
            'codigo' => 'D1-NAR-PAS-730-001', 'id' => '1860',
            'codigo' => 'D1-PUT-019-001', 'id' => '130',
            'codigo' => 'C1-PUT-026-001', 'id' => '1107',
            'codigo' => 'C1-PUT-087-001', 'id' => '339',
            'codigo' => 'D1-PUT-119-001', 'id' => '838',
            'codigo' => 'C1-PUT-159-001', 'id' => '323',
            'codigo' => 'D1-PUT-170-001', 'id' => '496',
            'codigo' => 'D1-PUT-175-001', 'id' => '1075',
            'codigo' => 'D1-PUT-204-001', 'id' => '537',
            'codigo' => 'D1-QUI-021-001', 'id' => '406',
            'codigo' => 'D1-QUI-038-001', 'id' => '1319',
            'codigo' => 'C1-SAN-032-001', 'id' => '6621',
            'codigo' => 'D1-SAN-582-001', 'id' => '10644',
            'codigo' => 'D1-SAN-679-001', 'id' => '8341',
            'codigo' => 'D1-SAN-772-001', 'id' => '6594',
            'codigo' => 'D1-SAN-822-001', 'id' => '10526',
            'codigo' => 'C1-TOL-018-001', 'id' => '2423',
            'codigo' => 'C1-TOL-018-002', 'id' => '2429',
            'codigo' => 'D1-TOL-320-001', 'id' => '10609',
            'codigo' => 'D1-TOL-335-001', 'id' => '9492',
            'codigo' => 'D1-TOL-348-001', 'id' => '10239',
            'codigo' => 'D1-TOL-520-001', 'id' => '7874',
            'codigo' => 'D1-TOL-544-001', 'id' => '9817',
            'codigo' => 'D1-TOL-544-002', 'id' => '9824',
            'codigo' => 'D1-TOL-544-003', 'id' => '9836',
            'codigo' => 'C1-TOL-557-001', 'id' => '9816',
            'codigo' => 'D1-TOL-570-001', 'id' => '4331',
            'codigo' => 'D1-VAL-012-001', 'id' => '8424',
        );
        var_dump($codigos);
        foreach ($codigos as $codigo) {
            //$sql = "UPDATE properties SET codigo =" . $codigo['codigo'] . " WHERE id = " . $codigo['id'];
            //$this->Proyect->query($sql);            
        }
    }

    function fase1_sider() {
        App::Import('model', 'Property');
        App::Import('model', 'TitleStudy');
        App::Import('model', 'Claim');

        $this->layout = "csv";
        ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
        //create a file
        $filename = "Reporte_sider_comite_reclamaciones" . date("Y.m.d") . ".csv";
        $csv_file = fopen('php://output', 'w');
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename="' . $filename . '"');
        Configure::write('debug', 0);
        $header_row = array("Convocatoria", "Código del Proyecto", "Filtro operativo inicial", "Recepción de subsanación", "Filtro operativo final",
            "Resultado títulos", "Cruce de base de datos", "SISBEN", "DAS", "Acción social", "INCORA"
            , "Calificación final", "Fecha fase 1");
        fputcsv($csv_file, $header_row, ';', '"');

        //Hacemos la consulta
        $sql = "SELECT proyect.id, proyect.codigo, proyect.resultado_fase1, correction_letter.fecha_envio FROM 'proyects' proyect
                LEFT JOIN correction_letters correction_letter ON correction_letter.proyect_id = proyect.id
                WHERE proyect.call_id = 1";

        //2011-04-19 fecha recepción

        $results = $this->Proyect->query($sql);

        // Each iteration of this while loop will be a row in your .csv file where each field corresponds to the heading of the column
        foreach ($results as $result) {
            // Array indexes correspond to the field names in your db table(s)
            $resultado_inicial = "";
            $fecha_recepcion = "";

            $resultado_final_fase1 = "";

            switch ($result['proyect']['resultado_fase1']) {
                case 0:
                    $resultado_final_fase1 = "RECHAZADO";

                    break;
                case 1:
                    $resultado_final_fase1 = "CUMPLE";

                    break;
                case 2:
                    $resultado_final_fase1 = "CUMPLE";

                    break;

                default:
                    $resultado_final_fase1 = "ERRROR";
                    break;
            }

            if (!is_null($result['correction_letter']['fecha_envio'])) {
                $resultado_inicial = "SUBSANABLE";
                $fecha_recepcion = $result['correction_letter']['fecha_envio'];
            } else {
                $resultado_inicial = $resultado_final_fase1;
            }

            $resultado_titulos = "CUMPLE";

            //1) BUSCAR TODOS LOS PREDIOS QUE TENGA EL PROYECTO.
            $property = new Property();
            $property->recursive = -1;
            $propiedades = $property->find('all', array('conditions' => array('Property.proyect_id' => $result['proyect']['id']), 'fields' => array('Property.id')));

            //2) BUSCAR EL ULTIMO ESTUDIO DE TITULO DE CADA PREDIO
            $estudio = new TitleStudy();
            $estudio->recursive = -1;
            $tiene_predios = false;

            $reclamacion = new Claim();
            $reclamacion->recursive = -1;

            foreach ($propiedades as $propiedad) {
                $tiene_predios = true;

                if ($resultado_titulos == "CUMPLE") {
                    $ultimo_estudio = $estudio->find('first', array('conditions' => array('TitleStudy.property_id' => $propiedad['Property']['id']), 'fields' => array('TitleStudy.calificacion'), 'order' => array('TitleStudy.id' => 'DESC')));
                    if ($ultimo_estudio['TitleStudy']['calificacion'] != '1') {
                        $resultado_titulos = "NO CUMPLE";

                        //BUSCAR LA ULTIMA RECLAMACIÓN Y VER SI FUE ACEPTADA.
                        //esto sucede si la calificación de titulos es "NO CUMPLE", entonces se busca si 
                        //se presento reclamación y si esta fue aceptada, entonces la calificación de estudios de titulo seria
                        //"CUMPLE"
                        if ($resultado_titulos == "NO CUMPLE") {
                            $calificacion_reclamacion = $reclamacion->field('Claim.calificacion', array('Claim.proyect_id' => $result['proyect']['id']), 'id DESC');
                            if ($calificacion_reclamacion == 'Acepta reclamacion') {
                                $resultado_titulos = "CUMPLE POR RECLAMACIÓN";
                            }
                        }
                    }
                }
            }

            if (!$tiene_predios) {
                $resultado_titulos = "NO CUMPLE POR QUE NO TIENE PREDIOS";
            }

            $row = array(
                "SIT-01-2011",
                $result['proyect']['codigo'],
                $resultado_inicial,
                $fecha_recepcion,
                $resultado_final_fase1,
                $resultado_titulos,
                "",
                "",
                "",
                "",
                "",
                $resultado_final_fase1,
                "2011-04-19"
            );

            fputcsv($csv_file, $row, ';', '"');
        }

        fclose($csv_file);
    }

    function public_index() {

        $this->Proyect->recursive = -1;
        $this->paginate = array('Proyect' => array('recursive' => -1, 'maxLimit' => 500, 'limit' => 100, 'joins' => array(array('table' => 'resolutions', 'alias' => 'Resolution', 'type' => 'left', 'conditions' => array('Resolution.proyect_id=Proyect.id'))), 'order' => array('Proyect.estado ASC'), 'fields' => array('Resolution.fecha', 'Resolution.numero', 'Proyect.codigo', 'Proyect.id', 'Proyect.estado')));
        $this->set('proyects', $this->paginate('Proyect', array('Proyect.publicado' => 1)));
    }

    function lock($proyect_id, $tipo) {
        $this->Proyect->id = $proyect_id;

        switch ($tipo) {
            case 1:
                //La opción 1, 2 y 3 funcionan para los proyectos publicados.
                //la opción 1 es para abrir
                $this->Proyect->saveField('estado', 0);
                $this->Session->setFlash('Proyecto editado con exito');
                $this->redirect(array('controller' => 'Proyects', 'action' => 'public_index'));
                break;
            case 2:
                //esta opcion es para cerrar
                $this->Proyect->saveField('estado', 1);
                $this->Session->setFlash('Proyecto editado con exito');
                $this->redirect(array('controller' => 'Proyects', 'action' => 'public_index'));
                break;
            case 3:
                $this->Proyect->saveField('publicado', 0);
                $this->Session->setFlash('el proyecto se quitó de la lista de publicados', 'flash_custom');
                $this->redirect(array('controller' => 'Proyects', 'action' => 'public_index'));
                break;
            case 4:
                //La opción 4 y 5 funcionan para bloquear otros proyectos que aún no han sido publicados.
                //esta opción abre el proyecto
                $this->Proyect->saveField('estado', 0);
                $this->Session->setFlash('El proyecto fue abierto, ahora se puede modificar.', 'flash_custom');
                $this->redirect(array('controller' => 'Proyects', 'action' => 'edit', $proyect_id));
                break;
            case 5:
                //esta opción cierra el proyecto
                $this->Proyect->saveField('estado', 1);
                $this->Session->setFlash('El proyecto fue cerrado, ahora no es posible modificarlo.', 'flash_custom');
                $this->redirect(array('controller' => 'Proyects', 'action' => 'edit', $proyect_id));
                break;
        }
    }

    function add_publication() {
        $this->Proyect->Call->recursive = -1;
        $this->set('calls', $this->Proyect->Call->find('list', array('fields' => array('Call.id', 'Call.nombre'))));

        if (empty($this->data)) {
            
        } else {

            $this->Proyect->recursive = -1;
            if ($proyecto = $this->Proyect->find('first', array('fields' => array('Proyect.id'), 'conditions' => array('Proyect.codigo' => $this->data['Proyect']['codigo'], 'Proyect.call_id' => $this->data['Proyect']['call_id'])))) {
                $this->Proyect->FinalEvaluation->recursive = -1;
                $evaluacion = $this->Proyect->FinalEvaluation->find('first', array('conditions' => array('FinalEvaluation.proyect_id' => $proyecto['Proyect']['id']), 'order' => array('FinalEvaluation.id DESC'), 'fields' => array('FinalEvaluation.calificacion_elegibilidad_integral')));
                if ($evaluacion['FinalEvaluation']['calificacion_elegibilidad_integral'] != 'Elegible') {
                    $this->Session->setFlash('El proyecto ' . $this->data['Proyect']['codigo'] . ' no es elegible', 'flash_custom');
                } else {
                    $datos = array(
                        'Proyect' => array(
                            'id' => $proyecto['Proyect']['id'],
                            'publicado' => 1,
                            'fecha_publicacion' => $this->data['Proyect']['fecha_publicacion'],
                        ),
                    );
                    if ($this->Proyect->save($datos)) {
                        $this->Session->setFlash('Proyecto publicado con exito', 'flash_custom');
                        $this->redirect(array('controller' => 'Proyects', 'action' => 'public_index'));
                    }
                }
            } else {
                $this->Session->setFlash('No existe el código digitado', 'flash_custom');
            }
        }
    }

    function allocations() {
        $proyect_id = $this->Session->read('proy_id');

        if ($proyect_id == "") {
            $this->Session->setFlash('No ha seleccionado Proyecto');
            $this->redirect(array('controller' => 'Pages', 'action' => 'display'));
        } else {

            $this->Proyect->recursive = -1;
            $this->paginate = array(
                'Proyect' => array('recursive' => -1, 'maxLimit' => 500, 'limit' => 100,
                    'joins' => array(
                        array('table' => 'user_proyects', 'alias' => 'UserProyect', 'type' => 'left', 'conditions' => array('UserProyect.proyect_id=Proyect.id')),
                        array('table' => 'users', 'alias' => 'User', 'type' => 'left', 'conditions' => array('UserProyect.user_id=User.id')),
                        array('table' => 'groups', 'alias' => 'Group', 'type' => 'left', 'conditions' => array('Group.id=User.group_id'))
                    ),
                    'order' => array('Proyect.publicado DESC'),
                    'fields' => array('Proyect.codigo', 'UserProyect.id', 'User.username', 'User.nombre', 'User.primer_apellido', 'Proyect.id', 'User.id', 'Group.name')));
            $this->set('proyects', $this->paginate('Proyect', array('Proyect.id' => $proyect_id, 'NOT' => array('UserProyect.id' => null))));
        }
    }

    function reporte_maestro() {
        $this->layout = "pdf";
        App::Import('model', 'Branch');
        App::Import('model', 'Property');
        App::Import('model', 'Call');
        App::Import('model', 'Departament');
        App::Import('model', 'City');
        App::Import('model', 'FinalEvaluation');
        App::Import('model', 'TopographicMap');
        App::Import('model', 'Resolution');
        ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
        //create a file
        $filename = "Reporte_Maestro_" . date("Y.m.d") . ".csv";
        $csv_file = fopen('php://output', 'w');
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename="' . $filename . '"');

        $header_row = array("DT", "Nombre Subgerencia", "Nombre predio", "Convocatoria", "Código del Proyecto", "Departamento", "Municipio", "UAF (Unidad: Hectáreas)", "Área mensura", " Área adjudicada y/o asignada", "Valor total del Subsidio", "Vr. Subsidio Tierra para Compra de Predio", "Vr. Subsidio para Proyecto Productivo", "Número de matrícula inmobiliaria");

        fputcsv($csv_file, $header_row, ';', '"');

        $territorial = new Branch();
        $properties = new Property();
        $convocatoria = new Call();
        $departamento = new Departament();
        $municipio = new City();
        $evaluacionFinal = new FinalEvaluation();
        $planoTopografico = new TopographicMap();
        $resolution = new Resolution();



        //Busco las resoluciones
        $resolution->recursive = -1;
        $resoluciones = $resolution->find('all', array('fields' => array('Resolution.proyect_id')));

        foreach ($resoluciones as $resolucion) {

            //Busco los id de todos los proyectos publicados.
            $this->Proyect->recursive = -1;
            $proyecto = $this->Proyect->find('first', array('conditions' => array('Proyect.id' => $resolucion['Resolution']['proyect_id']), 'fields' => array('Proyect.id', 'Proyect.codigo', 'Proyect.branch_id', 'Proyect.call_id', 'Proyect.city_id')));


            $nombreTerritorial = $territorial->field('nombre', array('id' => $proyecto['Proyect']['branch_id']));
            $properties->recursive = -1;
            $predios = $properties->find('all', array('conditions' => array('Property.proyect_id' => $proyecto['Proyect']['id']), 'fields' => array('Property.nombre', 'Property.id', 'Property.matricula')));
            $nombreConvocatoria = $convocatoria->field('nombre', array('id' => $proyecto['Proyect']['call_id']));
            $idDepartamento = $municipio->field('departament_id', array('id' => $proyecto['Proyect']['city_id']));
            $nombreMunicipio = $municipio->field('name', array('id' => $proyecto['Proyect']['city_id']));
            $nombreDepartamento = $departamento->field('name', array('id' => $idDepartamento));
            $familiasHabilitadas = $evaluacionFinal->field('familias_habilitadas', array('proyect_id' => $proyecto['Proyect']['id']), 'id DESC');
            $idEvaluacionFinal = $evaluacionFinal->field('id', array('proyect_id' => $proyecto['Proyect']['id']), 'id DESC');
            $subsidioProyectoProductivo = $evaluacionFinal->field('subsidio_proyecto_real', array('proyect_id' => $proyecto['Proyect']['id']), 'id DESC');
            $subsidioPredios = $evaluacionFinal->field('subsidio_predios_real', array('proyect_id' => $proyecto['Proyect']['id']), 'id DESC');


            $nombrePredios = "";
            $area_plano = 0;
            $matriculas_inmobiliarias = "";

            foreach ($predios as $predio) {
                $nombrePredios .= $predio['Property']['nombre'] . " ";
                $plano = $planoTopografico->find('first', array('joins' => array(array('table' => 'final_evaluation_annexes', 'alias' => 'Anexo', 'conditions' => 'Anexo.topographic_map_id=TopographicMap.id')), 'fields' => array('TopographicMap.area'), 'conditions' => array('Anexo.final_evaluation_id' => $idEvaluacionFinal, 'TopographicMap.property_id' => $predio['Property']['id'])));
                $area_plano = $area_plano + $plano['TopographicMap']['area'];
                $matriculas_inmobiliarias .= $predio['Property']['matricula'] . " ";
            }


            $uaf = 0;

            if ($familiasHabilitadas != 0) {
                $uaf = $area_plano / $familiasHabilitadas;
            }

            $row = array(
                $nombreTerritorial,
                "Subgerencia de Gestión y Desarrollo Productivo",
                $nombrePredios,
                $nombreConvocatoria,
                $proyecto['Proyect']['codigo'],
                $nombreDepartamento,
                $nombreMunicipio,
                number_format($uaf, 4, ',', '.'),
                number_format($area_plano, 4, ',', '.'),
                //pilas hay que cambiar este valor
                number_format($area_plano, 4, ',', '.'),
                number_format(($subsidioProyectoProductivo + $subsidioPredios), 4, ',', '.'),
                number_format($subsidioPredios, 4, ',', '.'),
                number_format($subsidioProyectoProductivo, 4, ',', '.'),
                $matriculas_inmobiliarias
            );

            fputcsv($csv_file, $row, ';', '"');
        }

        fclose($csv_file);
    }

    function reporte_control_desembolsos() {
        $this->layout = "pdf";
        App::Import('model', 'Call');
        App::Import('model', 'FinalEvaluation');
        App::Import('model', 'Resolution');
        App::Import('model', 'Payment');
        ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
        //create a file
        $filename = "Reporte_control_desembolsos" . date("Y.m.d") . ".csv";
        $csv_file = fopen('php://output', 'w');
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename="' . $filename . '"');
        //cabeceras 
        $header_row = array("CÓDIGO PROYECTO", "NÚMERO", "FECHA", "Total Familias", "Valor Subsidio Predio", "Subsidio Proyecto Productivo", "Subsidio Notarial", "VALOR GASTOS NOTARIALES DESEMBOLSADOS", "FECHA DESEMBOLSO GASTOS NOTARIALES ", "VALOR SUBSIDIO PREDIO DESEMBOLSADOS", "FECHA DESEMBOLSO SUBSIDIO PREDIO", "VALOR PROYECTO PRODUCTIVO DESEMBOLSADO", "FECHA DESEMBOLSO PROYECTO PRODUCTIVO");

        fputcsv($csv_file, $header_row, ';', '"');

        $properties = new Property();
        $convocatoria = new Call();
        $evaluacionFinal = new FinalEvaluation();
        $resolution = new Resolution();
        $payment = new Payment();

        //Busco las resoluciones
        $resolution->recursive = -1;

        //solo trae las resoluciones que tengan archivo adjunto.
        $resoluciones = $resolution->find('all', array('conditions' => array('Resolution.adjunto' => 1), 'fields' => array('Resolution.proyect_id', 'Resolution.numero', 'Resolution.fecha')));

        foreach ($resoluciones as $resolucion) {

            //Busco los id de todos los proyectos publicados.
            $this->Proyect->recursive = -1;
            $proyecto = $this->Proyect->find('first', array('conditions' => array('Proyect.id' => $resolucion['Resolution']['proyect_id']), 'fields' => array('Proyect.id', 'Proyect.codigo', 'Proyect.branch_id', 'Proyect.call_id', 'Proyect.city_id')));


            $properties->recursive = -1;
            $familiasHabilitadas = $evaluacionFinal->field('familias_habilitadas', array('proyect_id' => $proyecto['Proyect']['id']), 'id DESC');
            $subsidioProyectoProductivo = $evaluacionFinal->field('subsidio_proyecto_real', array('proyect_id' => $proyecto['Proyect']['id']), 'id DESC');
            $subsidioPredios = $evaluacionFinal->field('subsidio_predios_real', array('proyect_id' => $proyecto['Proyect']['id']), 'id DESC');

            $salarioMinimo = $convocatoria->field('Call.valor_smmv', array('Call.id' => 1));
            $gastos_notariales = $salarioMinimo * $familiasHabilitadas;

            $pagos = $payment->find('all', array('conditions' => array('Payment.proyect_id' => $resolucion['Resolution']['proyect_id'], 'Payment.fecha_pago_real <>' => '0000-00-00'), 'fields' => array('Payment.monto', 'Payment.fecha_pago_real', 'Payment.tipo')));

            $valor_desembolso_gasto_notarial = 0;
            $fecha_desembolso_gasto_notarial = '0000-00-00';
            $valor_desembolso_predios = 0;
            $fecha_desembolso_predios = '0000-00-00';
            $valor_desembolso_proyecto = 0;
            $fecha_desembolso_proyecto = '0000-00-00';

            foreach ($pagos as $pago) {
                switch ($pago['Payment']['tipo']) {
                    case 'GASTOS NOTARIALES':
                        $valor_desembolso_gasto_notarial = $pago['Payment']['monto'];
                        $fecha_desembolso_gasto_notarial = $pago['Payment']['fecha_pago_real'];

                        break;
                    case 'DESEMBOLSO PREDIO':
                        $valor_desembolso_predios = $pago['Payment']['monto'];
                        $fecha_desembolso_predios = $pago['Payment']['fecha_pago_real'];

                        break;
                    case 'PROYECTO PRODUCTIVO':
                        $valor_desembolso_proyecto = $pago['Payment']['monto'];
                        $fecha_desembolso_proyecto = $pago['Payment']['fecha_pago_real'];

                        break;

                    default:
                        break;
                }
            }

            $row = array(
                $proyecto['Proyect']['codigo'],
                $resolucion['Resolution']['numero'],
                $resolucion['Resolution']['fecha'],
                $familiasHabilitadas,
                number_format($subsidioPredios, 2, ',', '.'),
                number_format($subsidioProyectoProductivo, 2, ',', '.'),
                number_format($gastos_notariales, 2, ',', '.'),
                number_format($valor_desembolso_gasto_notarial, 2, ',', '.'),
                $fecha_desembolso_gasto_notarial,
                number_format($valor_desembolso_predios, 2, ',', '.'),
                $fecha_desembolso_predios,
                number_format($valor_desembolso_proyecto, 2, ',', '.'),
                $fecha_desembolso_proyecto
            );

            fputcsv($csv_file, $row, ';', '"');
        }

        fclose($csv_file);
    }

    function reporte_detalle() {
        $this->layout = "pdf";
        App::Import('model', 'Branch');
        App::Import('model', 'Candidate');
        App::Import('model', 'Call');
        App::Import('model', 'Departament');
        App::Import('model', 'City');
        App::Import('model', 'Resolution');

        ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
        //create a file
        $filename = "Reporte_Detalle_" . date("Y.m.d") . ".csv";
        $csv_file = fopen('php://output', 'w');
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename="' . $filename . '"');

        $header_row = array("DT", "Convocatoria", "Código Proyecto", "Código Sexo", "Tipo de documento de identificación del beneficiario", "Identificacion beneficiario", "1er.  Apellido", "2o. Apellido", "1er.  Nombre", "2o. Nombre", "Código Sexo Cónyuge o compañero", "Tipo de documento de identificación del cónyuge o compañero", "Identificación del cónyuge o compañero", "1er.  Apellido del cónyuge o compañero", "2o. Apellido del cónyuge o compañero", "1er.  Nombre del cónyuge o compañero", "2o. Nombre del cónyuge o compañero", "Tipo de documento de adjudicación", "Número de documento de adjudicación", "Fecha de documento de adjudicación (AAAA-MM-DD)", "Tipo de documento de Revocatoria", "Número de documento de Revocatoria", "Fecha de documento de Revocatroria (AAAA-MM-DD)");

        fputcsv($csv_file, $header_row, ';', '"');


        $territorial = new Branch();
        $aspirantes = new Candidate();
        $convocatoria = new Call();
        $resolution = new Resolution();
        $resolution->recursive = -1;
        $resoluciones = $resolution->find('all', array('conditions' => array("NOT" => array("Resolution.numero" => null)), 'fields' => array('Resolution.numero', 'Resolution.fecha', 'Resolution.proyect_id')));

        foreach ($resoluciones as $resolucion) {
            //Busco los id de todos los proyectos publicados.
            $this->Proyect->recursive = -1;
            $proyecto = $this->Proyect->find('first', array('conditions' => array('Proyect.id' => $resolucion['Resolution']['proyect_id']), 'fields' => array('Proyect.id', 'Proyect.codigo', 'Proyect.branch_id', 'Proyect.call_id', 'Proyect.city_id')));
            $nombreTerritorial = $territorial->field('nombre', array('id' => $proyecto['Proyect']['branch_id']));
            //busco todos los aspirantes principales de este proyecto
            $aspirantes->recursive = -1;
            $aspirantesPrincipales = $aspirantes->find('all', array('conditions' => array('Candidate.proyect_id' => $proyecto['Proyect']['id'], 'Candidate.candidate_id' => '0'), 'fields' => array('Candidate.*')));
            $nombreConvocatoria = $convocatoria->field('nombre', array('id' => $proyecto['Proyect']['call_id']));

            $genero = "";
            $tipoDocumento = "";
            $generoConyugue = "";
            $tipoDocumentoConyugue = "";


            foreach ($aspirantesPrincipales as $aspirantePrincipal) {

                $aspiranteConyugue = $aspirantes->find('first', array('conditions' => array('Candidate.candidate_id' => $aspirantePrincipal['Candidate']['id']), 'fields' => array('Candidate.*')));

                if ($aspiranteConyugue['Candidate']['genero'] == 1) {
                    //hombre
                    $generoConyugue = "M - Masculino";
                } elseif ($aspiranteConyugue['Candidate']['genero'] == 2) {
                    //mujer
                    $generoConyugue = "F - Femenino";
                } else {
                    $generoConyugue = "";
                }

                if ($aspiranteConyugue['Candidate']['tipo_ident'] == 1) {
                    //cedula
                    $tipoDocumentoConyugue = "1- Cédula de Ciudadanía";
                } elseif ($aspiranteConyugue['Candidate']['tipo_ident'] == 2) {
                    //tarjeta
                    $tipoDocumentoConyugue = "2- Tarjeta de identidad";
                } else {
                    $tipoDocumentoConyugue = "";
                }


                if ($aspirantePrincipal['Candidate']['genero'] == 1) {
                    //hombre
                    $genero = "M - Masculino";
                } else {
                    //mujer
                    $genero = "F - Femenino";
                }

                if ($aspirantePrincipal['Candidate']['tipo_ident'] == 1) {
                    //cedula
                    $tipoDocumento = "1- Cédula de Ciudadanía";
                } else {
                    //tarjeta
                    $tipoDocumento = "2- Tarjeta de identidad";
                }

                $row = array(
                    $nombreTerritorial,
                    $nombreConvocatoria,
                    $proyecto['Proyect']['codigo'],
                    $genero,
                    $tipoDocumento,
                    $aspirantePrincipal['Candidate']['nro_ident'],
                    $aspirantePrincipal['Candidate']['1er_apellido'],
                    $aspirantePrincipal['Candidate']['2do_apellido'],
                    $aspirantePrincipal['Candidate']['1er_nombre'],
                    $aspirantePrincipal['Candidate']['2do_nombre'],
                    $generoConyugue,
                    $tipoDocumentoConyugue,
                    $aspiranteConyugue['Candidate']['nro_ident'],
                    $aspiranteConyugue['Candidate']['1er_apellido'],
                    $aspiranteConyugue['Candidate']['2do_apellido'],
                    $aspiranteConyugue['Candidate']['1er_nombre'],
                    $aspiranteConyugue['Candidate']['2do_nombre'],
                    "Resolución",
                    $resolucion['Resolution']['numero'],
                    $resolucion['Resolution']['fecha'],
                    $resolucion['Resolution']['fecha'],
                    "",
                    "",
                    ""
                );

                fputcsv($csv_file, $row, ';', '"');
            }
        }

        fclose($csv_file);
    }

    function state_report_2009_1() {

        $this->layout = 'csv';
        ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
        //create a file
        $filename = "Reporte_2009_1_" . date("Y.m.d") . ".csv";
        $csv_file = fopen('php://output', 'w');
        $dep = $this->Auth->user('branch_id');
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename="' . $filename . '"');

        $sql = "SELECT a.codigo, c.nombre, b.fecha_inicio, b.observacion, d.username, d.nombre, d.primer_apellido 
                FROM proyects a 
                LEFT JOIN proyect_states b ON b.proyect_id =a.id
                LEFT JOIN states c ON  b.state_id=c.id
                LEFT JOIN users d ON d.id=b.user_id
                WHERE a.call_id=8 and b.id = (SELECT id FROM  proyect_states WHERE proyect_id=a.id ORDER BY fecha_inicio DESC, proyect_states.id DESC LIMIT 1)
                 ORDER BY a.codigo";

        $results = $this->Proyect->query($sql);

        // The column headings of your .csv file
        $header_row = array("Código proyecto", "Estado", "Fecha Inicio", "Observación", "Usuario", "Nombre", "Apellido");
        fputcsv($csv_file, $header_row, ';', '"');

        // Each iteration of this while loop will be a row in your .csv file where each field corresponds to the heading of the column
        foreach ($results as $result) {
            // Array indexes correspond to the field names in your db table(s)
            $row = array(
                $result['a']['codigo'],
                $result['c']['nombre'],
                $result['b']['fecha_inicio'],
                $result['b']['observacion'],
                $result['d']['username'],
                $result['d']['nombre'],
                $result['d']['primer_apellido']
            );

            fputcsv($csv_file, $row, ';', '"');
        }

        fclose($csv_file);
    }

    function state_report_2009_2() {
        $this->layout = 'csv';
        ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
        //create a file
        $filename = "Reporte_2009_2_" . date("Y.m.d") . ".csv";
        $csv_file = fopen('php://output', 'w');
        $dep = $this->Auth->user('branch_id');
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename="' . $filename . '"');

        $sql = "SELECT a.codigo, c.nombre, b.fecha_inicio, b.observacion, d.username, d.nombre, d.primer_apellido 
                FROM proyects a 
                LEFT JOIN proyect_states b ON b.proyect_id =a.id
                LEFT JOIN states c ON  b.state_id=c.id
                LEFT JOIN users d ON d.id=b.user_id
                WHERE a.call_id=9 and b.id = (SELECT id FROM  proyect_states WHERE proyect_id=a.id ORDER BY fecha_inicio DESC, proyect_states.id DESC LIMIT 1)  ORDER BY a.codigo
                ";

        $results = $this->Proyect->query($sql);

        // The column headings of your .csv file
        $header_row = array("Código proyecto", "Estado", "Fecha Inicio", "Observación", "Usuario", "Nombre", "Apellido");
        fputcsv($csv_file, $header_row, ';', '"');

        // Each iteration of this while loop will be a row in your .csv file where each field corresponds to the heading of the column
        foreach ($results as $result) {
            // Array indexes correspond to the field names in your db table(s)
            $row = array(
                $result['a']['codigo'],
                $result['c']['nombre'],
                $result['b']['fecha_inicio'],
                $result['b']['observacion'],
                $result['d']['username'],
                $result['d']['nombre'],
                $result['d']['primer_apellido']
            );

            fputcsv($csv_file, $row, ';', '"');
        }

        fclose($csv_file);
    }

    function state_report_2010() {
        $this->layout = 'csv';
        ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
        //create a file
        $filename = "Reporte_2010_" . date("Y.m.d") . ".csv";
        $csv_file = fopen('php://output', 'w');
        $dep = $this->Auth->user('branch_id');
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename="' . $filename . '"');

        $sql = "SELECT a.codigo, c.nombre, b.fecha_inicio, b.observacion, d.username, d.nombre,d.primer_apellido
                FROM proyects a 
                LEFT JOIN proyect_states b ON b.proyect_id =a.id
                LEFT JOIN states c ON  b.state_id=c.id
                LEFT JOIN users d ON d.id=b.user_id 
                WHERE a.call_id = 10 and b.id = (SELECT id FROM  proyect_states WHERE proyect_id = a.id ORDER BY fecha_inicio DESC, proyect_states.id DESC LIMIT 1) ORDER BY a.codigo
            ";

        $results = $this->Proyect->query($sql);

        // The column headings of your .csv file
        $header_row = array("Código proyecto", "Estado", "Fecha Inicio", "Observación", "Usuario", "Nombre", "Apellido");
        fputcsv($csv_file, $header_row, ';', '"');

        // Each iteration of this while loop will be a row in your .csv file where each field corresponds to the heading of the column
        foreach ($results as $result) {
            // Array indexes correspond to the field names in your db table(s)
            $row = array(
                $result['a']['codigo'],
                $result['c']['nombre'],
                $result['b']['fecha_inicio'],
                $result['b']['observacion'],
                $result['d']['username'],
                $result['d']['nombre'],
                $result['d']['primer_apellido']
            );

            fputcsv($csv_file, $row, ';', '"');
        }

        fclose($csv_file);
    }

    function state_report_2011() {
        $this->layout = 'csv';
        ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
        //create a file
        $filename = "Reporte_2011_" . date("Y.m.d") . ".csv";
        $csv_file = fopen('php://output', 'w');
        $dep = $this->Auth->user('branch_id');
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename="' . $filename . '"');

        $sql = "SELECT a.codigo, c.nombre, b.fecha_inicio, b.observacion, d.username, d.nombre,d.primer_apellido
                FROM proyects a 
                LEFT JOIN proyect_states b ON b.proyect_id =a.id
                LEFT JOIN states c ON  b.state_id=c.id
                LEFT JOIN users d ON d.id=b.user_id 
                WHERE a.call_id = 1 and b.id = (SELECT id FROM  proyect_states WHERE proyect_id = a.id ORDER BY fecha_inicio DESC, proyect_states.id DESC LIMIT 1) ORDER BY a.codigo
            ";

        $results = $this->Proyect->query($sql);

        // The column headings of your .csv file
        $header_row = array("Código proyecto", "Estado", "Fecha Inicio", "Observación", "Usuario", "Nombre", "Apellido");
        fputcsv($csv_file, $header_row, ';', '"');

        // Each iteration of this while loop will be a row in your .csv file where each field corresponds to the heading of the column
        foreach ($results as $result) {
            // Array indexes correspond to the field names in your db table(s)
            $row = array(
                $result['a']['codigo'],
                $result['c']['nombre'],
                $result['b']['fecha_inicio'],
                $result['b']['observacion'],
                $result['d']['username'],
                $result['d']['nombre'],
                $result['d']['primer_apellido']
            );

            fputcsv($csv_file, $row, ';', '"');
        }

        fclose($csv_file);
    }

    function my_proyects($tipo) {
        $this->layout = 'csv';
        ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
        //create a file
        $csv_file = fopen('php://output', 'w');
        $id_user = $this->Auth->user('id');
        header('Content-type: application/csv');
        $filename = "";
        if ($tipo == 1) {
            $filename = "Reporte_2009_1_" . date("Y.m.d") . ".csv";
            $sql = "SELECT a.codigo, c.nombre, b.fecha_inicio, b.observacion, d.username, d.nombre,d.primer_apellido
                FROM proyects a 
                LEFT JOIN proyect_states b ON b.proyect_id =a.id
                LEFT JOIN states c ON  b.state_id=c.id
                LEFT JOIN users d ON d.id=b.user_id 
                WHERE a.call_id = 8  and b.id = (SELECT id FROM  proyect_states WHERE proyect_id = a.id ORDER BY fecha_inicio DESC, proyect_states.id DESC LIMIT 1) and d.id = $id_user ORDER BY a.codigo
            ";
        } else if ($tipo == 2) {
            $filename = "Reporte_2009_2_" . date("Y.m.d") . ".csv";
            $sql = "SELECT a.codigo, c.nombre, b.fecha_inicio, b.observacion, d.username, d.nombre,d.primer_apellido
                FROM proyects a 
                LEFT JOIN proyect_states b ON b.proyect_id =a.id
                LEFT JOIN states c ON  b.state_id=c.id
                LEFT JOIN users d ON d.id=b.user_id 
                WHERE a.call_id = 9  and b.id = (SELECT id FROM  proyect_states WHERE proyect_id = a.id ORDER BY fecha_inicio DESC, proyect_states.id DESC LIMIT 1) and d.id = $id_user ORDER BY a.codigo
            ";
        } else if ($tipo == 3) {
            $filename = "Reporte_2010_" . date("Y.m.d") . ".csv";
            $sql = "SELECT a.codigo, c.nombre, b.fecha_inicio, b.observacion, d.username, d.nombre,d.primer_apellido
                FROM proyects a 
                LEFT JOIN proyect_states b ON b.proyect_id =a.id
                LEFT JOIN states c ON  b.state_id=c.id
                LEFT JOIN users d ON d.id=b.user_id 
                WHERE a.call_id=10  and b.id = (SELECT id FROM  proyect_states WHERE proyect_id = a.id ORDER BY fecha_inicio DESC, proyect_states.id DESC LIMIT 1) and d.id = $id_user ORDER BY a.codigo
            ";
        } else if ($tipo == 4) {
            $filename = "Reporte_2011_" . date("Y.m.d") . ".csv";
            $sql = "SELECT a.codigo, c.nombre, b.fecha_inicio, b.observacion, d.username, d.nombre,d.primer_apellido
                FROM proyects a 
                LEFT JOIN proyect_states b ON b.proyect_id =a.id
                LEFT JOIN states c ON  b.state_id=c.id
                LEFT JOIN users d ON d.id=b.user_id 
                WHERE a.call_id=1  and b.id = (SELECT id FROM  proyect_states WHERE proyect_id = a.id ORDER BY fecha_inicio DESC, proyect_states.id DESC LIMIT 1) and d.id = $id_user ORDER BY a.codigo
            ";
        }
        header('Content-Disposition: attachment; filename="' . $filename . '"');

        $results = $this->Proyect->query($sql);
        // The column headings of your .csv file
        $header_row = array("Código proyecto", "Estado", "Fecha Inicio", "Observación", "Usuario", "Nombre", "Apellido");
        fputcsv($csv_file, $header_row, ';', '"');

        // Each iteration of this while loop will be a row in your .csv file where each field corresponds to the heading of the column
        foreach ($results as $result) {
            // Array indexes correspond to the field names in your db table(s)
            $row = array(
                $result['a']['codigo'],
                $result['c']['nombre'],
                $result['b']['fecha_inicio'],
                $result['b']['observacion'],
                $result['d']['username'],
                $result['d']['nombre'],
                $result['d']['primer_apellido']
            );

            fputcsv($csv_file, $row, ';', '"');
        }

        fclose($csv_file);
    }

    function reportes_estados() {
        $this->layout = 'ajax';
    }

    function state_report($convocatoria) {
        $this->layout = "csv";
        ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
        //create a file
        $filename = "Reporte_por_departamentos_" . date("Y.m.d") . ".csv";
        $csv_file = fopen('php://output', 'w');
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename="' . $filename . '"');

        // The column headings of your .csv file               

        $cabeceras = $this->Proyect->query("SELECT id, nombre FROM states AS Estado ORDER BY id ASC");
        $cabeceras1 = $cabeceras;
        $header_row[] = "DEPARTAMENTO";
        foreach ($cabeceras as $cabecera) {
            $header_row[] = $cabecera['Estado']['nombre'];
        }
        fputcsv($csv_file, $header_row, ';', '"');

        $departamentos = $this->Proyect->query("SELECT Departament.id,Departament.name FROM departaments AS Departament WHERE 1");
        foreach ($departamentos as $departament) {
            $fila = array();
            $fila[] = $departament['Departament']['name'];

            foreach ($cabeceras1 as $cabecera) {
                if ($convocatoria == 1) {
                    $proyectos = $this->Proyect->query("SELECT Proyect.id FROM proyects Proyect WHERE departament_id=" . $departament['Departament']['id'] . " AND call_id=8 ");
                } else if ($convocatoria == 2) {
                    $proyectos = $this->Proyect->query('SELECT Proyect.id FROM proyects Proyect WHERE departament_id=' . $departament['Departament']['id'] . "  AND call_id=9 ");
                } elseif ($convocatoria == 3) {
                    $proyectos = $this->Proyect->query('SELECT Proyect.id FROM proyects Proyect WHERE departament_id=' . $departament['Departament']['id'] . "  AND call_id=10 ");
                } elseif ($convocatoria == 4) {
                    $proyectos = $this->Proyect->query('SELECT Proyect.id FROM proyects Proyect WHERE departament_id=' . $departament['Departament']['id'] . "  AND call_id=1 ");
                }
                $cont = 0;
                foreach ($proyectos as $proyecto) {
                    $resultados = $this->Proyect->query("SELECT ProyectState.state_id FROM proyect_states ProyectState WHERE ProyectState.proyect_id=" . $proyecto['Proyect']['id'] . " ORDER BY fecha_inicio DESC, ProyectState.id DESC LIMIT 1");
                    foreach ($resultados as $res) {

                        if ($res['ProyectState']['state_id'] == $cabecera['Estado']['id']) {
                            $cont++;
                        }
                    }
                }
                $fila[] = $cont;
            }

            fputcsv($csv_file, $fila, ';', '"');
        }

        fclose($csv_file);
    }

    public function solicitud_pagos() {
        $this->layout = "csv";
        ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
        //create a file
        $filename = "Reporte_para_solicitudes_de_pago" . date("Y.m.d") . ".csv";
        $csv_file = fopen('php://output', 'w');
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename="' . $filename . '"');

        // The column headings of your .csv file               

        fputcsv($csv_file, $header_row, ';', '"');

        $gastosNotariales = $this->Proyect->query("");

        foreach ($departamentos as $departament) {

            fputcsv($csv_file, $fila, ';', '"');
        }

        fclose($csv_file);
    }

    function users_report($convocatoria) {
        $this->layout = "ajax";
        ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
        //create a file
        $filename = "Reporte_por_usuarios_" . date("Y.m.d") . ".csv";
        $csv_file = fopen('php://output', 'w');
        //header('Content-type: application/csv');
        //header('Content-Disposition: attachment; filename="' . $filename . '"');

        // The column headings of your .csv file               

        $cabeceras = $this->Proyect->query("SELECT id, nombre FROM states AS Estado ORDER BY id ASC");
        $cabeceras1 = $cabeceras;
        $header_row[] = "USUARIO";
        foreach ($cabeceras as $cabecera) {
            $header_row[] = $cabecera['Estado']['nombre'];
        }
        fputcsv($csv_file, $header_row, ';', '"');

        //Selecciono los usuarios que tengan proyectos asociados.
        $usuarios = $this->Proyect->query("SELECT User.id, User.nombre, User.primer_apellido, User.segundo_apellido FROM users AS User WHERE User.id IN (
                                           SELECT DISTINCT b.id FROM 'user_proyects' a
                                           LEFT JOIN users b ON b.id = a.user_id
                                           WHERE b.group_id IN(23,22))");

        foreach ($usuarios as $usuario) {
            $fila = array();
            $fila[] = $usuario['User']['nombre'] . " " . $usuario['User']['primer_apellido'] . " " . $usuario['User']['segundo_apellido'];

            foreach ($cabeceras1 as $cabecera) {
                //se obtien el id de los proyectos relacionados al usuario.
                if ($convocatoria == 1) {
                    $proyectos = $this->Proyect->query("SELECT UserProyect.proyect_id FROM user_proyects UserProyect 
                                                        LEFT JOIN proyects Proyect ON Proyect.id = UserProyect.proyect_id
                                                        WHERE user_id =" . $usuario['User']['id'] . " AND Proyect.call_id=8");
                } else if ($convocatoria == 2) {
                    $proyectos = $this->Proyect->query("SELECT UserProyect.proyect_id FROM user_proyects UserProyect 
                                                        LEFT JOIN proyects Proyect ON Proyect.id = UserProyect.proyect_id
                                                        WHERE user_id =" . $usuario['User']['id'] . " AND  Proyect.call_id=9");
                } elseif ($convocatoria == 3) {
                    $proyectos = $this->Proyect->query("SELECT UserProyect.proyect_id FROM user_proyects UserProyect 
                                                        LEFT JOIN proyects Proyect ON Proyect.id = UserProyect.proyect_id
                                                        WHERE user_id =" . $usuario['User']['id'] . " AND  Proyect.call_id=10");
                } elseif ($convocatoria == 4) {
                    $proyectos = $this->Proyect->query("SELECT UserProyect.proyect_id FROM user_proyects UserProyect 
                                                        LEFT JOIN proyects Proyect ON Proyect.id = UserProyect.proyect_id
                                                        WHERE user_id =" . $usuario['User']['id'] . " AND  Proyect.call_id=1");
                }
                $cont = 0;
                foreach ($proyectos as $proyecto) {
                    //Solo se toma el ultimo estado de cada proyecto.                    
                    $estadosProyectos = $this->Proyect->query("SELECT ProyectState.state_id FROM proyect_states ProyectState WHERE ProyectState.proyect_id=" . $proyecto['UserProyect']['proyect_id'] . " ORDER BY fecha_inicio DESC, ProyectState.id DESC LIMIT 1");
                    foreach ($estadosProyectos as $estadoProyecto) {
                        if ($estadoProyecto['ProyectState']['state_id'] == $cabecera['Estado']['id']) {
                            //Se cuentan cuantos proyectos que pertenecen al usuario tienen el id de la cabecera.
                            $cont++;
                        }
                    }
                }
                $fila[] = $cont;
            }

            fputcsv($csv_file, $fila, ';', '"');
        }

        fclose($csv_file);
    }

    function evaluation_report() {

        $this->layout = "csv";
        ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
        //create a file
        $filename = "Reporte_propais_" . date("Y.m.d") . ".csv";
        $csv_file = fopen('php://output', 'w');
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename="' . $filename . '"');

        // "Codigo del proyecto","Dpto Ejecucion","Municipio de  Ejecucion","Evaluador" ,"Familias totales inscritas","Familias principales habilitadas","Familias suplentes habilitadas","No. Predios","Area Predio(s)Títulos","Area Predio(s) Plano","Área potencialmente utilizable","Area Bosques o Cobertura Vegetal","Valor predio(s) (avalúo)","Valor predio(s) (F 3)","Venta Parcial","Presenta la totalidad de anexos del formulario 8","Ubicación de los predios","Suelos","Mejoras No útiles o Suntuarias","","UAF","TIR","CABIDA  Minima","CABIDA  Maxima","Subsidio predio aprobado","Subsidio predio Maximo","Subsu ppx max","POR CABIDA FAMILIAR,POR AREA EN TITULOS,POR NEGOCIACIÓN,"Concepto Integral de Elegibilidad"
        $cabecera = array('Código',"Acta de panel", "Dpto Ejecución", "Municipio de  Ejecuciòn", "Evaluador", "Familias totales inscritas", "Familias principales habilitadas", "Familias suplentes habilitadas", "No. Predios", "Área Predio(s) Títulos (suma del área ingreada en fase I a cada predio) ", "Area Predio(s) Plano (suma del área de plano ingresada  en fase IIB a cada predio)", "Área útil según plano", "Area Bosques o Cobertura Vegetal (plano)", "Àrea útil avalúo ", "Àrea no útil avalúo ", "Valor predio(s) (avalúo)", "Valor predio(s) (F 3) formulario 3 ingreasdo en fase I", 'Venta parcial', " EI Predio ubicación calificación", "Predio ubicación concepto", "Predio identificacion calificación", "Predio identificacion concepto", "Calificación Precio del (los) predio(s)", "Concepto precio del (los) predio(s)", "Áreas productivas calificación", "Áreas productivas concepto", "Construcciones y anexos calificación", "Construcciones y anexos concepto", "Área del proyecto productivo formulado calificación", "Área del proyecto productivo formulado concepto", "Área explotación actual", "Área explotación proyectada", "Compatibilidad del proyecto productivo respecto a lo descrito en el formularios 6 y 7", "Compatibilidad del proyecto productivo respecto a lo descrito en el formularios 6 y 7 concepto", "Explotación Agropecuaria calificación", "Explotación Agropecuaria concepto", "Vocación productiva calificacion", "Vocación productiva concepto", "Asistencia técnica calificacion", "Asistencia técnica concepto", "Información finaciera calificación", "Información finaciera concepto", "Lineas productívas (Evaluación inicial)", "Calificación integral Evaluación inicial", "Concepto integral integral Evaluación inicial", "Descripción del proyecto","Lineas productívas (Evaluación final)", 'Formulario 8 calificación', 'Formulario 8 concepto', 'Concepto aspectos productivos', 'Concepto aspectos productivos', 'Calificación_aspectos_sociales', 'Concepto_aspectos_sociales', 'Calificación aspectos financieros', 'Concepto aspectos financieros', 'Calificación aspectos ambientales', 'Concepto aspectos ambientales', 'UAF', "TIR", "Subsidio máximo p productivo", "Subsidio maximo predios", 'Calificacion_elegibilidad_integral', 'Concepto_elegibilidad_integral', 'Condicionamientos');
        fputcsv($csv_file, $cabecera, ';', '"');
        $iniciales = $this->Proyect->Query('SELECT Convocatoria.smmv_proyecto,Convocatoria.valor_smmv,Convocatoria.smmv_predios,Departament.name,City.name,Proyect.codigo,Proyect.predio_valor,Proyect.id,User.nombre,User.primer_apellido,InitialEvaluation.* 
            FROM proyects Proyect LEFT JOIN initial_evaluations InitialEvaluation ON Proyect.id=InitialEvaluation.proyect_id 
            LEFT JOIN users User On User.id=InitialEvaluation.user_id 
            LEFT JOIN cities City On City.id=Proyect.city_id 
            LEFT JOIN departaments Departament On City.departament_id=Departament.id 
            LEFT JOIN calls Convocatoria On Convocatoria.id=Proyect.call_id 
            WHERE InitialEvaluation.id=(SELECT max(id) from initial_evaluations WHERE proyect_id=Proyect.id )');
        foreach ($iniciales as $inicial) {
            
            $acta=$this->Proyect->FormAct->find('first',array('recursive'=>-1, 'conditions'=>array('FormAct.proyect_id'=>$inicial['Proyect']['id']) ,'fields'=>array('FormAct.numero_acta')));
            
            $total_familias = $this->Proyect->Candidate->find('count', array('recursive' => -1, 'conditions' => array('Candidate.proyect_id' => $inicial['Proyect']['id'], 'Candidate.candidate_id' => 0)));
            $total_principales = $this->Proyect->Candidate->find('count', array('recursive' => -1, 'conditions' => array('Candidate.proyect_id' => $inicial['Proyect']['id'], 'Candidate.candidate_id' => 0, 'Candidate.clase' => 1, 'Candidate.estado_filtro' => array(1, 5, 6))));
            $total_suplentes = $this->Proyect->Candidate->find('count', array('recursive' => -1, 'conditions' => array('Candidate.proyect_id' => $inicial['Proyect']['id'], 'Candidate.candidate_id' => 0, 'Candidate.clase' => 2, 'Candidate.estado_filtro' => array(1, 5, 6))));
            $predios = $this->Proyect->Property->find('all', array('recursive' => -1, 'conditions' => array('Property.proyect_id' => $inicial['Proyect']['id']), 'fields' => array('Property.nombre', 'Property.id', 'Property.area_negociacion', 'Property.area_titulo', 'Property.matricula')));
            $num_predios = count($predios);
            $area_titulo = 0;
            $area_plano = 0;
            $area_util = 0;
            $area_util_avaluo = 0;
            //Area bosque pendiente por deducir
            $area_bosques = 0;
            $area_avaluo = 0;
            $valor_avaluo = 0;
            $area_no_util_avaluo = 0;


            foreach ($predios as $predio) {
                $area_titulo+=floatval($predio['Property']['area_titulo']);
                $plano = $this->Proyect->Property->TopographicMap->find('first', array('conditions' => array('TopographicMap.property_id' => $predio['Property']['id']), 'fields' => array('TopographicMap.id', 'TopographicMap.area', 'TopographicMap.venta_parcial'), 'order' => array('TopographicMap.id DESC')));
                $area_plano = $plano['TopographicMap']['area'];

                $area = $this->Proyect->Property->TopographicMap->TopographicArea->find('first', array('conditions' => array('TopographicArea.topographic_map_id' => $plano['TopographicMap']['id'], 'AreaType.productiva' => 1), 'fields' => array('total')));
                $area_util = $area_util + $area['TopographicArea']['total'];

                $areab = $this->Proyect->Property->TopographicMap->TopographicArea->find('first', array('conditions' => array('TopographicArea.topographic_map_id' => $plano['TopographicMap']['id'], 'AreaType.id' => array(7, 12)), 'fields' => array('total')));
                $area_bosques = $area_bosques + $areab['TopographicArea']['total'];

                $avaluo = $this->Proyect->Property->EvaluationAppraisal->find('first', array('conditions' => array('EvaluationAppraisal.property_id' => $predio['Property']['id']), 'fields' => array('EvaluationAppraisal.id', 'EvaluationAppraisal.area', 'EvaluationAppraisal.valor'), 'order' => array('EvaluationAppraisal.id DESC')));
                $area_avaluo+=$avaluo['EvaluationAppraisal']['area'];
                $valor_avaluo+=$avaluo['EvaluationAppraisal']['valor'];

                $unidades = $this->Proyect->Property->EvaluationAppraisal->EvaluationPhysiographicUnit->find('first', array('conditions' => array('EvaluationPhysiographicUnit.util' => 'SI', 'EvaluationPhysiographicUnit.evaluation_appraisal_id' => $avaluo['EvaluationAppraisal']['id']), 'fields' => array('EvaluationPhysiographicUnit.sumaArea')));

                $area_util_avaluo+=$unidades['EvaluationPhysiographicUnit']['sumaArea'];

                $unidades = $this->Proyect->Property->EvaluationAppraisal->EvaluationPhysiographicUnit->find('first', array('conditions' => array('EvaluationPhysiographicUnit.util' => 'NO', 'EvaluationPhysiographicUnit.evaluation_appraisal_id' => $avaluo['EvaluationAppraisal']['id']), 'fields' => array('EvaluationPhysiographicUnit.sumaArea')));
                $area_no_util_avaluo+=$unidades['EvaluationPhysiographicUnit']['sumaArea'];
            }

            $fila = array($inicial['Proyect']['codigo'],$acta['FormAct']['numero_acta'], $inicial['Departament']['name'], $inicial['City']['name'], $inicial['User']['nombre'] . " " . $inicial['User']['primer_apellido'], $total_familias, $total_principales, $total_suplentes, $num_predios, number_format($area_titulo, 4, ',', '.'), number_format($area_plano, 4, ',', '.'), number_format($area_util, 4, ',', '.'), number_format($area_bosques, 4, ',', '.'), number_format($area_util_avaluo, 4, ',', '.'), number_format($area_no_util_avaluo, 4, ',', '.'), $valor_avaluo, $inicial['Proyect']['predio_valor'], $plano['TopographicMap']['venta_parcial']);
            //DESDE ACA VAN LOS CAMPOS DE LA EVALUACION INICIAL 
            $fila[] = $inicial['InitialEvaluation']['predio_ubicacion_calificacion'];
            $fila[] = $inicial['InitialEvaluation']['predio_ubicacion_concepto'];
            $fila[] = $inicial['InitialEvaluation']['predio_identificacion_calificacion'];
            $fila[] = $inicial['InitialEvaluation']['predio_identificacion_concepto'];

            $fila[] = $inicial['InitialEvaluation']["calificacion_valor_avaluo"];
            $fila[] = $inicial['InitialEvaluation']["concepto_valor_avaluo"];
            $fila[] = $inicial['InitialEvaluation']["area_productiva_calificacion"];
            $fila[] = $inicial['InitialEvaluation']["area_productiva_concepto"];
            $fila[] = $inicial['InitialEvaluation']["construcciones_calificacion"];
            $fila[] = $inicial['InitialEvaluation']["construcciones_concepto"];
            $fila[] = $inicial['InitialEvaluation']["calificacion_areas_explotacion"];
            $fila[] = $inicial['InitialEvaluation']["concepto_areas_explotacion"];

            $fila[] = $inicial['InitialEvaluation']["area_explotacion_actual"];
            $fila[] = $inicial['InitialEvaluation']["area_explotacion_proyectada"];

            $fila[] = $inicial['InitialEvaluation']["formularios_calificacion"];
            $fila[] = $inicial['InitialEvaluation']["formularios_concepto"];
            $fila[] = $inicial['InitialEvaluation']["explotacion_agraria_calificacion"];
            $fila[] = $inicial['InitialEvaluation']["explotacion_agraria_concepto"];

            $fila[] = $inicial['InitialEvaluation']["vocacion_productiva_calificacion"];
            $fila[] = $inicial['InitialEvaluation']["vocacion_productiva_concepto"];

            $fila[] = $inicial['InitialEvaluation']["asistencia_calificacion"];
            $fila[] = $inicial['InitialEvaluation']["asistencia_concepto"];
            $fila[] = $inicial['InitialEvaluation']["componente_financiero_calificacion"];
            $fila[] = $inicial['InitialEvaluation']["componente_financiero_concepto"];

            //Lineas productivas de evaluaion inicial
            App::Import('model', 'InitialEvaluation');
            $InitialEvaluation = new InitialEvaluation();
            $lineas = $InitialEvaluation->ProductiveLine->find('all', array('fields' => array('ProductiveActivity.nombre'), 'conditions' => array('ProductiveLine.initial_evaluation_id' => $inicial['InitialEvaluation']["id"])));
            $strLineas = "";
            foreach ($lineas as $linea) {
                $strLineas = $linea['ProductiveActivity']['nombre'] . " ";
            }

            $fila[] = $strLineas;
            $fila[] = $inicial['InitialEvaluation']["calificacion_integral"];
            $fila[] = $inicial['InitialEvaluation']["concepto_integral"];





            $evaluacionfinal = $this->Proyect->FinalEvaluation->find('first', array('recursive' => -1, 'conditions' => array('FinalEvaluation.proyect_id' => $inicial['Proyect']['id'])));
            //LINEAS PRODUCTIVAS EVALUACION FINAL
            //Lineas productivas de evaluaion inicial
            App::Import('model', 'FinalProductiveLine');
            $FinalProductiveLine = new FinalProductiveLine();
            $lineas = $FinalProductiveLine->find('all', array('fields' => array('ProductiveActivity.nombre'), 'conditions' => array('FinalProductiveLine.final_evaluation_id' => $evaluacionfinal['FinalEvaluation']["id"])));
            $strLineas = "";
            foreach ($lineas as $linea) {
                $strLineas = $linea['ProductiveActivity']['nombre'] . " ";
            }
            
            $fila[] = $evaluacionfinal['FinalEvaluation']['nombre_proyecto'];
            $fila[] = $strLineas;
            $fila[] = $evaluacionfinal['FinalEvaluation']['calificacion_anexos'];
            $fila[] = $evaluacionfinal['FinalEvaluation']['concepto_anexos'];
            $fila[] = $evaluacionfinal['FinalEvaluation']['calificacion_aspectos_productivos'];
            $fila[] = $evaluacionfinal['FinalEvaluation']['concepto_aspectos_productivos'];
            $fila[] = $evaluacionfinal['FinalEvaluation']['calificacion_aspectos_sociales'];
            $fila[] = $evaluacionfinal['FinalEvaluation']['concepto_aspectos_sociales'];
            $fila[] = $evaluacionfinal['FinalEvaluation']['calificacion_aspectos_financieros'];
            $fila[] = $evaluacionfinal['FinalEvaluation']['concepto_aspectos_financieros'];
            $fila[] = $evaluacionfinal['FinalEvaluation']['calificacion_aspectos_ambientales'];
            $fila[] = $evaluacionfinal['FinalEvaluation']['concepto_aspectos_ambientales'];

            //Subsidios 

            $subsido_maximo_proyecto = $inicial['Convocatoria']['smmv_proyecto'] * $inicial['Convocatoria']['valor_smmv'];
            $subsido_maximo_predios = $inicial['Convocatoria']['smmv_predios'] * $inicial['Convocatoria']['valor_smmv'];

            $familias_habilitadas = $evaluacionfinal['FinalEvaluation']['familias_habilitadas'];
            $uaf = 0;
            if ($familias_habilitadas == 0) {
                $uaf = 0;
            } else {

                $uaf = ($area_plano) / $familias_habilitadas;
            }
            $fila[] = $uaf;
            $fila[] = $evaluacionfinal['FinalEvaluation']['tir'];
            $fila[] = $subsido_maximo_proyecto;
            $fila[] = $subsido_maximo_predios;

            $fila[] = $evaluacionfinal['FinalEvaluation']['calificacion_elegibilidad_integral'];
            $fila[] = $evaluacionfinal['FinalEvaluation']['concepto_elegibilidad_integral'];
            $this->Proyect->FinalEvaluation->EvaluationConstraint->unBindModel(array('belongsTo' => array('FinalEvaluation')));
            $condicionamientos = $this->Proyect->FinalEvaluation->EvaluationConstraint->find('all', array('conditions' => array('EvaluationConstraint.final_evaluation_id' => $evaluacionfinal['FinalEvaluation']['id']), 'fields' => array('Constraint.nombre', 'EvaluationConstraint.descripcion')));
            $str = "";
            foreach ($condicionamientos as $condicionamiento) {
                $str.=$condicionamiento['Constraint']['nombre'] . ": " . $condicionamiento['EvaluationConstraint']['descripcion'] . "\n";
            }
            $fila[] = $str;
            fputcsv($csv_file, $fila, ';', '"');
        }
        fclose($csv_file);
    }

    function vias_acceso() {
        //Una realización de Omar Amaya. 2012.
        //Importamos modelos que esten a mas de UNA relacion de Proyect
        App::Import('model', 'Property');
        App::Import('model', 'City');
        App::Import('model', 'Departament');
        App::Import('model', 'Poll');

        //Inicializamos variables
        //Damos layout y tiempo de ejecucion del service
        $this->layout = "csv";
        ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
        //create a file
        $filename = "Reporte_Vias_Acceso_" . date("Y.m.d") . ".csv";
        $csv_file = fopen('php://output', 'w');
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename="' . $filename . '"');
        //Creamos las columnas que tendria el proyecto
        $header_row = array("Código Proyecto", "Viabilidad Proyecto", "Código Predio", "Vía de acceso al predio", "Vías internas", "Distancia a centro urbano (Km)",
            "Tiempo a centro urbano (Horas)", "Distancia a vía principal (Km)", "Tiempo a vía principal (Horas)",
            "Distancia a centro comercilización (Km)", "Tiempo a centro comercilización (Horas)", "Descripción de acceso al predio",
        );
        //Escribimos la cabecera en el archivo con esta funcion que recibe 4 parametros
        fputcsv($csv_file, $header_row, ';', '"');

        //Hacemos la consulta
        $sql = "SELECT convocatoria.`nombre`, proyecto.`codigo`, proyecto.`resultado_fase2`, predio.`codigo`,  poll.`vias_acceso`, poll.`tiene_vias_internas`, poll.`distancia_centro_urbano_km`, poll.`distancia_centro_urbano_horas`, poll.`distancia_via_principal_km`, poll.`distancia_via_principal_horas`, poll.`distancia_centro_comercializacion_km`, poll.`distancia_centro_comercializacion_horas`, poll.`descripcion_vias_internas`, proyecto.id 
                FROM  `proyects` proyecto 
                LEFT JOIN  `properties` predio ON ( predio.proyect_id = proyecto.id ) 
                LEFT JOIN  `polls` poll ON ( poll.proyect_id = proyecto.id ) 
                LEFT JOIN  `calls` convocatoria ON ( proyecto.call_id = convocatoria.id )
                WHERE call_id=1 AND proyecto.`resultado_fase2`=1
                ORDER BY `proyecto`.`codigo` ASC ";

        $results = $this->Proyect->query($sql);

        // Each iteration of this while loop will be a row in your .csv file where each field corresponds to the heading of the column

        foreach ($results as $result) {

            //DESENCRIPTAMOS EL CAMPO resultado_fase2
            //0=>'Sin registro', 1=>'Viable',2=>'No Viable'
            $viabilidad = $result['proyecto']['resultado_fase2'];
            $tipo_viabilidad = "";
            switch ($viabilidad) {
                case '0':
                    $tipo_viabilidad = "Sin registro";
                    break;
                case '1':
                    $tipo_viabilidad = "Viable";
                    break;
                case '2':
                    $tipo_viabilidad = "No Viable";
                    break;
                default:
                    $tipo_viabilidad = "ERROR";
                    break;
            }

            // Array indexes correspond to the field names in your db table(s)
            $row = array(
                //Código Proyecto
                $result['proyecto']['codigo'],
                //Viabilidad Proyecto
                $tipo_viabilidad,
                //Código Predio
                $result['predio']['codigo'],
                //Vía de acceso al predio
                $result['poll']['vias_acceso'],
                //Vías internas
                $result['poll']['tiene_vias_internas'],
                //Distancia a centro urbano (Km)
                $result['poll']['distancia_centro_urbano_km'],
                //Tiempo a centro urbano (Horas)
                $result['poll']['distancia_centro_urbano_horas'],
                //Distancia a vía principal (Km)
                $result['poll']['distancia_via_principal_km'],
                //Tiempo a vía principal (Horas)
                $result['poll']['distancia_via_principal_horas'],
                //Distancia a centro comercilización (Km)
                $result['poll']['distancia_centro_comercializacion_km'],
                //Tiempo a centro comercilización (Horas)
                $result['poll']['distancia_centro_comercializacion_horas'],
                //Descripción de acceso al predio
                $result['poll']['descripcion_vias_internas'],
            );

            fputcsv($csv_file, $row, ';', '"');
        }

        fclose($csv_file);
    }

    function igac_cruce() {
        //Una realización de Omar Amaya. 2012.
        //Importamos modelos que esten a mas de UNA relacion de Proyect
        App::Import('model', 'Property');
        App::Import('model', 'City');
        App::Import('model', 'Departament');
        App::Import('model', 'Poll');

        //Inicializamos variables
        //damos layout y tiempo de ejecucion del service
        $this->layout = "csv";
        ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
        //create a file
        $filename = "Reporte_IGAC_" . date("Y.m.d") . ".csv";
        $csv_file = fopen('php://output', 'w');
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename="' . $filename . '"');

        //Creamos las columnas que tendria el REPORTE
        $header_row = array("Código Proyecto", "Código Predio", "Departamento", "Municipio", "Vereda",
            "Nombre del predio", "Matrícula inmobiliaria", "Código catastral", "Nombre propietario",
            "Área catastral", "Área levantamiento topográfico",
        );

        //Escribimos la cabecera en el archivo con esta fucnion que recibe 4 parametros
        fputcsv($csv_file, $header_row, ';', '"');

        //Hacemos la consulta
        $sql = "
            SELECT proyecto.id, convocatoria.`nombre`, proyecto.`codigo`, predio.`codigo`, Departament.`name`,
            City.name, predio.`vereda`, predio.`nombre`,  predio.`matricula`, predio.`nro_catastral`, owner.`nombres`,
            owner.`primer_apellido`, owner.`segundo_apellido`, predio.`area_titulo`, topographic_map.`area`
            FROM  `proyects` proyecto
            LEFT JOIN  `properties` predio ON ( predio.proyect_id = proyecto.id ) 
            LEFT JOIN  `topographic_maps` topographic_map ON ( topographic_map.property_id = predio.id ) 
            LEFT JOIN  `calls` convocatoria ON ( proyecto.call_id = convocatoria.id )
            LEFT JOIN `cities` City ON (predio.city_id=City.id)
            LEFT JOIN `departaments` Departament ON (City.departament_id=Departament.id)
            LEFT JOIN `owners` owner ON (owner.property_id=predio.id)
            WHERE convocatoria.id=1
            ";

        $results = $this->Proyect->query($sql);

        // Each iteration of this while loop will be a row in your .csv file where each field corresponds to the heading of the column

        foreach ($results as $result) {
            // Array indexes correspond to the field names in your db table(s)
            $row = array(
                //Código Proyecto
                $result['proyecto']['codigo'],
                //Código Predio
                $result['predio']['codigo'],
                //Departamento
                $result['Departament']['name'],
                //Municipio
                $result['City']['name'],
                //Vereda
                $result['predio']['vereda'],
                //Nombre del predio
                $result['predio']['nombre'],
                //Matrícula inmobiliaria
                $result['predio']['matricula'],
                //Código catastral
                $result['predio']['nro_catastral'],
                //Nombre propietario
                $result['owner']['nombres'] . " " . $result['owner']['primer_apellido'] . " " . $result['owner']['segundo_apellido'],
                //Área catastral
                $result['predio']['area_titulo'],
                //Área levantamiento topográfico
                $result['topographic_map']['area'],
            );

            fputcsv($csv_file, $row, ';', '"');
        }

        fclose($csv_file);
    }

}

?>
